基本的 Awk 问题,但我似乎无法在任何地方找到答案:
我有一个包含 50000 个 txt 文件的文件夹,我想从中对一个子集运行 AWK 搜索。我已将要限制搜索的文件名保存在单独的文档中。这将大大加快搜索速度,目前看起来像这样:
awk -F "searchTerm" '{print NF-1}' data/output/*>> output.txt
非常感谢
基本的 Awk 问题,但我似乎无法在任何地方找到答案:
我有一个包含 50000 个 txt 文件的文件夹,我想从中对一个子集运行 AWK 搜索。我已将要限制搜索的文件名保存在单独的文档中。这将大大加快搜索速度,目前看起来像这样:
awk -F "searchTerm" '{print NF-1}' data/output/*>> output.txt
非常感谢
假设调用了包含要搜索的子集的文件,subset.txt
并且其内容具有这种格式(每个文件在单独的行上):
file1.txt
file2.txt
file3.txt
...
fileN.txt
然后这将做的伎俩:
awk -F "searchTerm" '{print NF-1}' $(<subset.txt) >> output.txt
解释:
$(<subset.txt)
将提供文件的子集列表awk
作为输入。(见下面乔纳森莱弗勒的评论)我还应该指出,-F "searchTerm"
实际上是将字段分隔符(awk 在每一行上使用的限制器)设置为searchTerm
. 如果要在包含“searchTerm”的每一行上打印字段数 - 1,请执行以下操作:
awk '/searchTerm/ {print NF-1}' $(cat subset.txt) >> output.txt
我认为这对你有用。
awk '/searchTerm/{print $(NF-1)}' data/output/*>> output.txt
如果您将列表放在名为 filelist.txt 的文件中,则可以只使用 cat 命令中的标准输出。
awk -F "searchTerm" '{print NF-1}' `cat data/output/filelist.txt` >> output.txt`