搜索文件中的重复行,计算它和哪个位置(行号)而不进行排序?

时间:2018-02-26 08:12:55

标签: linux shell awk

我一直在阅读类似问题here,但答案是在没有行号的情况下提供的。

[root@test ~]# cat -n file 
     1  123 
     2  123 
     3  234 
     4  234 
     5  123 
     6  345
[root@test ~]#

[root@test ~]# sort file | uniq -c
      3 123 
      2 234 
      1 345
[root@test ~]# 

我正在寻找的是this,但在Linux shell脚本(首选)或任何其他脚本解决方案。

输出由textmechanic.com提供

( 2 dupe of 1 ): 123 
( 4 dupe of 3 ): 234 
( 5 dupe of 1 ): 123 

1 个答案:

答案 0 :(得分:3)

您可以使用awk

awk '{if ($1 in a) printf "( %d dupe of %d ): %s\n", NR, a[$1], $1; else a[$1] = NR}' file

( 2 dupe of 1 ): 123
( 4 dupe of 3 ): 234
( 5 dupe of 1 ): 123