如何在行本身旁边添加相同行的数量?

How to add number of identical line next to the line itself?

我有文件 file.txt 看起来像这样

a
b
b
c
c
c

我想知道获取 file.txt 作为输入并产生输出的命令

a 1
b 2
c 3

你可以使用这个 awk:

awk '!seen[[=10=]]++{ print [=10=], (++c) }' file
a 1
b 2
c 3

seen 是一个数组,它在第一次填充索引时递增到 1,仅包含唯一项。在操作中,我们正在打印记录和递增计数器。


更新: 根据下面的评论,如果打算在第二列中获得 重复计数 ,则使用此 awk 命令:

awk 'seen[[=11=]]++{} END{ for (i in seen) print i, seen[i] }' file
a 1
b 2
c 3

我认为 uniq 是您正在寻找的命令。 uniq -c 的输出与您的格式略有不同,但这很容易修复。

$ uniq -c file.txt
      1 a
      2 b
      3 c

如果你想计算出现次数,你可以使用 uniq-c

如果文件未排序,您必须先使用 sort

$ sort file.txt | uniq -c
1 a
2 b
3 c

如果您确实需要先行后跟计数,请将列交换为 awk

$ sort file.txt | uniq -c | awk '{ print  " " }'
a 1
b 2
c 3