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