Bash在大文件中查找多个字符串的计数

时间:2015-01-26 05:08:38

标签: bash unix search

我正在尝试使用bash命令获取大型txt文件中各种字符串的计数。

即。使用bash找到字符串'pig','horse'和'cat'的计数,得到一个输出'pig:7,horse:3,cat:5'。我想要一种方法只搜索一次txt文件,因为它非常大(所以我不想通过整个txt文件搜索'pig',然后返回并搜索'horse'等)

任何有关命令的帮助都将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:5)

grep -Eo 'pig|horse|cat' txt.file | sort | uniq -c | awk '{print $2": "$1}'

将其分解成碎片:

grep -Eo 'pig|horse|cat'  Print all the occurrences (-o) of the
                          extended (-e) regex 
sort                      Sort the resulting words
uniq -c                   Output unique values (of sorted input)
                          with the count (-c) of each value
awk '{print $2": "$1}'    For each line, print the second field (the word)
                          then a colon and a space, and then the first
                          field (the count).