![如何计算连续相同行的数量](https://linux22.com/image/943527/%E5%A6%82%E4%BD%95%E8%AE%A1%E7%AE%97%E8%BF%9E%E7%BB%AD%E7%9B%B8%E5%90%8C%E8%A1%8C%E7%9A%84%E6%95%B0%E9%87%8F.png)
我有一个如下所示的文件:
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