我有一个如下所示的文件:
2000
2000
2001
2001
2001
2001
2002
2002
我需要一个脚本来向我展示这一点:
2000 - 2
2001 - 4
2002 - 2
我更喜欢使用 sed 或 awk
答案1
这正是uniq -c
所做的。来自man uniq
:
描述
从 INPUT(或标准输入)中过滤相邻匹配的行,写入 OUTPUT(或标准输出)。
[。 。 。 ]
-c, --count
按出现次数计算前缀行数
因此,通过你的例子,我们得到:
$ uniq -c file
2 2000
4 2001
2 2002
如果你出于某些原因喜欢,你也可以编写一个小脚本。例如awk
:
$ awk '{ count[$0]++ } END{ for(line in count){ print line,count[line] }}' file
2000 2
2001 4
2002 2