如何计算连续相同行的数量

如何计算连续相同行的数量

我有一个如下所示的文件:

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

相关内容