我一直在使用
grep -o string file | wc -l
获得字数,但我有一个格式的文件
help
help
help
how
how
luke
mark
我想知道是否有一个命令会返回:3,2,1,1
而不是多次运行上一个命令
您可以使用
sort input.txt | uniq -c
这将输出
3 help
2 how
1 luke
1 mark
您可以从中继续处理输出。如果您已经知道相同的条目位于连续的行块中,您当然可以跳过sort
并uniq
直接使用,这也将保留顺序。
单进程awk方式
awk '{a[$0]++}END{for(x in a)print x" : "a[x]}' file
kent$ echo "help
help
help
how
how
luke
mark"|awk '{a[$0]++}END{for(x in a)print x" : "a[x]}'
luke : 1
help : 3
how : 2
mark : 1