5

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

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

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

非常感谢

4

3 回答 3

1

假设调用了包含要搜索的子集的文件,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
于 2012-11-23T21:03:53.793 回答
0

我认为这对你有用。

awk '/searchTerm/{print $(NF-1)}' data/output/*>> output.txt
于 2012-11-23T21:05:41.687 回答
0

如果您将列表放在名为 filelist.txt 的文件中,则可以只使用 cat 命令中的标准输出。

 awk -F "searchTerm" '{print NF-1}' `cat data/output/filelist.txt` >> output.txt`
于 2015-11-10T23:37:42.720 回答