我的文件file.txt
看起来像这样
a
b
b
c
c
c
我想知道get file.txt
作为输入的命令并生成输出
a 1
b 2
c 3
答案 0 :(得分:4)
我认为uniq
是您正在寻找的命令。 uniq -c
的输出与您的格式略有不同,但可以轻松修复。
$ uniq -c file.txt
1 a
2 b
3 c
答案 1 :(得分:2)
如果您想计算出现次数,可以uniq
使用-c
。
如果文件未排序,则必须先使用sort
$ sort file.txt | uniq -c
1 a
2 b
3 c
如果您确实需要先行后跟计数,请将列与awk
$ sort file.txt | uniq -c | awk '{ print $2 " " $1}'
a 1
b 2
c 3
答案 2 :(得分:0)
你可以使用这个awk:
awk '!seen[$0]++{ print $0, (++c) }' file
a 1
b 2
c 3
seen
是一个数组,只有在第一次填充索引时递增到1
才能保存uniq项。在操作中,我们打印记录和递增计数器。
更新:根据下面的评论,如果想要在第二列中获得重复计数,请使用此awk命令:
awk 'seen[$0]++{} END{ for (i in seen) print i, seen[i] }' file
a 1
b 2
c 3