unix - AWK 根据搜索模式打印特定行

标签 unix search printing awk pattern-matching

我有两组文件 test.csv data.xml。

我正在尝试从 test.csv 中 grep 特定字段并在 data.xml 中搜索字符串。如果找到字符串,则打印 test.csv 文件中的相应行。

示例

搜索字符串是字段 3 服务器名称

测试.csv

111,xxx,serversugar,port90
222,yyy,servertorque,port190
333,aaa,serverastrix,port8080
422,yxy,servertorque,port290

data.xml

<group>
<hostname>servertorque</hostname>
<hostname>serverastrix</hostname></group>

预期输出

222,yyy,servertorque,port190
333,aaa,serverastrix,port8080
422,yxy,servertorque,port290

最佳答案

使用 GNU sed 和 grep 只需两步

sed '/>\w\+</!d;s/.*>\(\w\+\).*/\1/' data.xml>pattern.txt
grep -wf pattern.txt test.csv

..输出:

222,yyy,servertorque,port190
333,aaa,serverastrix,port8080
422,yxy,servertorque,port290

关于unix - AWK 根据搜索模式打印特定行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17036547/

相关文章:

string - Shell 脚本 - 从变量中删除第一个和最后一个引号 (")

linux - 未检测到 MC7455 sierra 无线 PCI

在注册表中搜索键 - JScript

javascript - 在嵌套树中定位元素 - JavaScript

c - 打印到屏幕 n 个字符串

javascript - 从页面禁用浏览器打印选项(页眉、页脚、边距)?

java运行时exec进程无法正常工作

c++ - 在 C++ 程序中读取命令行参数时出现内存错误

php - Codeigniter - Ajax 从 Controller /模型返回数据问题

java - 从 Java 打印 PDF 文档时,部分文本会旋转