Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
递归grep结果并返回管道_Grep - Fatal编程技术网

递归grep结果并返回管道

递归grep结果并返回管道,grep,Grep,我需要从一个文件中找到一些匹配的条件,然后递归地在以前匹配的文件中找到下一个条件,我有这样的东西 input.txt 123 二十二 三十三 您需要在以下文件中查找上述术语的文件,挑战是如果在10个文件中找到123,则应仅在这10个文件中搜索22个,依此类推。。。 例如f1、f2、f3、f4…..f1200等文件 所以我需要grep-w“123”f*| grep-w“123”| 手动列出它们是不可能的,因此没有更简单的方法吗?也许从元编程的角度来看会有所帮助。让grep输出一系列grep命令。或

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

input.txt

123

二十二

三十三

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

所以我需要grep-w“123”f*| grep-w“123”|


手动列出它们是不可能的,因此没有更简单的方法吗?

也许从元编程的角度来看会有所帮助。让
grep
输出一系列
grep
命令。或者编写一个小PERL程序。如果心情合适,也许是Ruby。

也许从元编程的角度来看会有所帮助。让
grep
输出一系列
grep
命令。或者编写一个小PERL程序。如果心情合适的话,也许是Ruby。

您可以使用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执行,结果通过管道传回 支持
  • 当你到达终点时,管道就被避开了

您可以使用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执行,结果通过管道传回 支持
  • 当你到达终点时,管道就被避开了

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


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

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


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

这是否减少了它在每次迭代中必须扫描的文件?是的,它与grep-w“123”f*| grep-w“22”| grep-w“33”相同啊是的,我应该自己推断:)这是否减少了它在每次迭代时必须扫描的文件?是的,它与grep-w“123”f*| grep-w“22”| grep-w“33”相同是的,我应该自己推断:)