2012-11-23 27 views
5

基本awk中的問題選擇輸入文件,但我似乎無法找到任何地方的答案:在awk從列表

我有50000的txt文件的文件夾,從中我想運行AWK的一個子集搜索。我保存了要將搜索範圍限制在單獨文檔中的文件名。這將大大加快搜索速度,這在目前是這樣的:

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

非常感謝

回答

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。如果你要打印字段的數量 - 在包含「搜索關鍵詞」每行1,這樣做:

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

優秀,非常感謝,我知道它很容易=) –

+0

@RolfFredheim看到更新的答案=) –

+0

在'bash',就能避免'cat'過程用'$(<子集。 txt)',它避免了一個子shell和一個進程。 –

0

我認爲這會爲你工作。

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

如果你有一個名爲filelist.txt的文件,你可以使用cat命令的stdout。

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