作为输入,我们有一些字符串 id。我们如何计算哪个标识符出现最频繁以及出现了多少次?
输入:
cat
dog
cat
dog
dog
dog
dog
fly
spider
spider
cat
cat
Run Code Online (Sandbox Code Playgroud)
输出:
dog 5
Run Code Online (Sandbox Code Playgroud)
slm*_*slm 11
您可以使用命令 sort
&uniq -c
来计算所有字符串的出现次数,如下所示:
$ sort sample.txt | uniq -c
4 cat
5 dog
1 fly
2 spider
Run Code Online (Sandbox Code Playgroud)
如果你只想要一个字符串“狗”,你可以grep
在之前或之后使用。
后
$ sort sample.txt | uniq -c | grep dog
5 dog
Run Code Online (Sandbox Code Playgroud)
前
$ grep dog sample.txt | uniq -c
5 dog
Run Code Online (Sandbox Code Playgroud)
该命令uniq -c
将计算它显示的所有唯一字符串,但列表需要先按排序顺序。这就是为什么我们sort
在进行计数之前使用该命令的原因。
该命令grep
用于在输出中选择感兴趣的内容。您可以将其grep
视为一个过滤器,它可以根据您希望从输出中获得的内容来包含或单独地起作用。
该sort
命令可以根据规则对数据进行排序。在这种情况下,我们让它在默认模式下运行,因此它根据一组字母数字排序规则对数据进行排序。
如果您只查找一个字符串:
grep -cxF dog
Run Code Online (Sandbox Code Playgroud)
或者
echo "dog: $(grep -cxF dog)"
Run Code Online (Sandbox Code Playgroud)
完整列表的有效解决方案:
> awk '{a[$0]++}; END {for (val in a) print val ": " a[val];}' file
spider: 2
cat: 4
fly: 1
dog: 5
Run Code Online (Sandbox Code Playgroud)