假設您有幾個文本文件,並且您想要查看哪些文本包含單詞'the'的頻率。第一個想法似乎是使用grep
與-c
選項:我可以讓grep返回幾個文件中的真實發生次數嗎?
$ grep -Hciw 'the' *
不幸的是,這給了錯誤的計數,因爲它計算字每行只有一次,而不管「的」實際有多少實例在線。
對於一個單一的文件,我可以組合使用選項-o
與wc
得到匹配的字符串
$ grep -owi 'the' file.txt | wc -l
但如果我更換file.txt
有星號或一個文件列表,我只獲取累計的點擊次數,而不是每個文件的點擊次數。
到目前爲止,我已經找到了最好的方法是一個循環:
for f in *; do
num=$(grep -oiw 'the' $f | wc -l);
echo ${f}:${num};
done
但是,這真的是最好的方法是什麼?
工作,你可能會使文件的預處理副本'TR「」「\ n''把每一個字佔據一行...可能儘管使用'awk'更好。 – o11c
所有三個答案都很好,而且截然不同。最後,我決定和@Jotne一起去,因爲他不需要一個管道。但是,三者都值得理解。 – chw21