awk从列表中选择输入文件

时间:2012-11-23 20:56:30

标签: awk

基本的Awk问题,但我似乎无法在任何地方找到答案:

我有一个包含50000个txt文件的文件夹,我想从中运行一个子集上的AWK搜索。我已将我想要限制搜索的文件名保存在单独的文档中。这将极大地加速搜索,目前看起来像这样:

awk -F "searchTerm" '{print NF-1}' data/output/*>> output.txt

非常感谢

3 个答案:

答案 0 :(得分:1)

假设包含您要搜索的子集的文件名为subset.txt,其内容具有此格式(每个文件位于单独的一行):

file1.txt
file2.txt
file3.txt
...
fileN.txt

然后这将解决问题:

awk -F "searchTerm" '{print NF-1}' $(<subset.txt) >> output.txt

<强>解释

  • $(<subset.txt)会将文件的子集列表提供给awk作为输入。 (见Jonathan Leffler在下面的评论)

我还应该指出-F "searchTerm"实际上是将字段分隔符(awk在每一行上使用的限制器)设置为searchTerm。如果要在包含“searchTerm”的每一行上打印字段数 - 1,请执行:

awk '/searchTerm/ {print NF-1}' $(cat subset.txt) >> output.txt

答案 1 :(得分:0)

我认为这对你有用。

awk '/searchTerm/{print $(NF-1)}' data/output/*>> output.txt

答案 2 :(得分:0)

如果你在名为filelist.txt的文件中有列表,你可以使用cat命令中的stdout。

 awk -F "searchTerm" '{print NF-1}' `cat data/output/filelist.txt` >> output.txt`