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

wmi*_*ell 7 grep find

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

索引文件: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
Run Code Online (Sandbox Code Playgroud)

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

Jon*_*ler 3

这能起到作用吗?

find . -name '*.index' |
xargs grep -l "XXXX" |
sed 's/\.log\.*/.log/' |
xargs grep "XXXX"
Run Code Online (Sandbox Code Playgroud)

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

您可能想sort -u在该步骤之后插入一个步骤sed