基本的Awk问题,但我似乎无法在任何地方找到答案:
我有一个50000 txt文件的文件夹,我想从中运行一个子集上的AWK搜索.我已将我想要限制搜索的文件名保存在单独的文档中.这将极大地加速搜索,目前看起来像这样:
awk -F "searchTerm" '{print NF-1}' data/output/*>> output.txt
Run Code Online (Sandbox Code Playgroud)
非常感谢
假设调用了包含要搜索的子集的文件,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)