1

我需要从文件中找到一些匹配条件并递归地在以前匹配的文件中找到下一个条件,我有这样的东西

输入.txt

123

22

33

您需要在以下文件中找到上述术语的文件,挑战是如果在 10 个文件中找到 123,则应仅在这 10 个文件中搜索 22,依此类推...文件示例如 f1、f2、 f3,f4 .....f1200

所以就像我需要 grep -w "123" f* | grep -w "123" | ......

不可能手动列出它们,所以有更简单的方法吗?

4

3 回答 3

1

您可以使用 awk 脚本解决此问题,我遇到过类似的问题,这将正常工作

awk '{ if(!NR){printf("grep -w %d f*|",$1)} else {printf("grep -w %d f*",$1)} }' input.txt | sh

它能做什么?

  • 它逐行读取 input.txt
  • 直到最后一条记录,它打印 grep -w %d | (注意这里有一个管道)
  • 然后将其发送到 shell 执行,结果通过管道背靠背传输
  • 当你到达终点时,管道被避开
于 2012-06-01T03:32:15.720 回答
0

也许采取元编程观点会有所帮助。已经grep输出了一系列grep命令。或者编写一个小的 PERL 程序。也许 Ruby,如果心情合适的话。

于 2012-06-01T03:30:14.340 回答
0

您可以使用grep -lw写入匹配的文件名列表(请注意,它会在找到第一个匹配项后停止)。

您捕获文件名列表并将其用于循环中的下一次迭代。

于 2012-06-01T03:37:16.457 回答