bash找到链接到一个然后打印的grep

我有一些基本上采用格式的数据文件的一系列索引文件

索引文件:asdfg.log.1234.2345.index

数据文件:asdfg.log

这个想法是要搜索所有的索引文件。 如果值XXXX出现在一个索引文件中,请去grep其相应的数据文件并在数据文件中打印XXXX出现的那一行。

到目前为止,我可以简单地在索引文件中搜索值XXXX,例如

find . -name "*.index" | xargs grep "XXXX"     // Gives me a list of the index files with XXXX in them

我如何使索引文件匹配,然后grep其相应的数据文件?


这是否有诀窍?

find . -name '*.index' |
xargs grep -l "XXXX" |
sed 's/.log.*/.log/' |
xargs grep "XXXX"

find命令来自你的例子。 第一个xargs grep只列出(索引)文件名。 sed将文件名映射到数据文件名。 第二个xargs grep然后扫描数据文件。

您可能想要在sed步骤之后插入sort -u步骤。


grep -l "XXXX" *.index | while read -r FOUND
do
   if [ -f "${FOUND%.log*}log" ];then
      grep "XXXX" "$FOUND"
   fi
done 
链接地址: http://www.djcxy.com/p/2067.html

上一篇: bash find chained to a grep which then prints

下一篇: CATransform3DRotate and UIImageView