如何在行本身旁边添加相同行的数量?
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
我有文件 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