如何从grep筛选出的文件列表中匹配numofvertice字段?
解决思路与命令方案
直接利用管道将第一步筛选出的文件路径传递给grep即可,以下是两种常用实现方式:
方法1:使用xargs传递文件列表
通过管道把筛选后的文件路径交给xargs,让它将每个路径作为参数传给grep,直接在目标文件中搜索字段:
grep -rnw /home/username/app/data/store/0/part/.mv -e "TypeId: 0" | awk -F ":" '{print $1}' | xargs grep "numofvertice"
- 如果你的文件名包含空格(虽然yaml场景较少见),可以用
null分隔符避免错误:grep -rnw /home/username/app/data/store/0/part/.mv -e "TypeId: 0" | awk -F ":" '{print $1}' | tr '\n' '\0' | xargs -0 grep "numofvertice" - 若需要显示匹配行的行号,给
grep加-n参数;若只想输出字段本身及对应值,加-o参数。
方法2:使用grep的-f选项读取文件列表
利用grep的--files-from(缩写-f)选项,直接从第一步的输出结果中读取要搜索的文件路径:
grep "numofvertice" -f <(grep -rnw /home/username/app/data/store/0/part/.mv -e "TypeId: 0" | awk -F ":" '{print $1}')
这里的<()是进程替换语法,会把括号内命令的输出当作临时文件传递给grep。
内容的提问来源于stack exchange,提问作者Yudha Restu
相关产品推荐
相关产品推荐

