我需要从文件中找到一些匹配条件并递归地在以前匹配的文件中找到下一个条件,我有这样的东西
输入.txt
123
22
33
您需要在以下文件中找到上述术语的文件,挑战是如果在 10 个文件中找到 123,则应仅在这 10 个文件中搜索 22,依此类推...文件示例如 f1、f2、 f3,f4 .....f1200
所以就像我需要 grep -w "123" f* | grep -w "123" | ......
不可能手动列出它们,所以有更简单的方法吗?
我需要从文件中找到一些匹配条件并递归地在以前匹配的文件中找到下一个条件,我有这样的东西
输入.txt
123
22
33
您需要在以下文件中找到上述术语的文件,挑战是如果在 10 个文件中找到 123,则应仅在这 10 个文件中搜索 22,依此类推...文件示例如 f1、f2、 f3,f4 .....f1200
所以就像我需要 grep -w "123" f* | grep -w "123" | ......
不可能手动列出它们,所以有更简单的方法吗?
您可以使用 awk 脚本解决此问题,我遇到过类似的问题,这将正常工作
awk '{ if(!NR){printf("grep -w %d f*|",$1)} else {printf("grep -w %d f*",$1)} }' input.txt | sh
它能做什么?
也许采取元编程观点会有所帮助。已经grep
输出了一系列grep
命令。或者编写一个小的 PERL 程序。也许 Ruby,如果心情合适的话。
您可以使用grep -lw
写入匹配的文件名列表(请注意,它会在找到第一个匹配项后停止)。
您捕获文件名列表并将其用于循环中的下一次迭代。