awk从列表中选择输入文件

Rol*_*eim 5 awk

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

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

awk -F "searchTerm" '{print NF-1}' data/output/*>> output.txt
Run Code Online (Sandbox Code Playgroud)

非常感谢

sam*_*hen 1

假设调用了包含要搜索的子集的文件,subset.txt并且其内容具有以下格式(每个文件位于单独的行上):

file1.txt
file2.txt
file3.txt
...
fileN.txt
Run Code Online (Sandbox Code Playgroud)

那么这就可以解决问题了:

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

解释:

  • $(<subset.txt)将提供文件子集列表作为awk输入。(请参阅下面乔纳森·莱夫勒的评论)

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

awk '/searchTerm/ {print NF-1}' $(cat subset.txt) >> output.txt
Run Code Online (Sandbox Code Playgroud)