我想在文本文件中找到第一个重复行。
我通常在文件中找到重复行的方法是使用uniq,它接受一个排序文件,所以我:
sort inputfile | uniq -c | sort -nr > outputfile
计算所有重复项并按降序打印。
通过使用uniq进行排序,我在原始复制发生的时间/地点丢失,我现在只对第一个重复的行感兴趣。
有什么想法吗?
答案 0 :(得分:5)
awk '{ if(seen[$0]) { print; exit } seen[$0] = 1 }' file
这将跟踪每一行,然后打印之前看到的第一行。如果您想要行号,也可以打印NR。
awk '{ if(seen[$0]) { print NR, $0; exit } seen[$0] = 1 }' file
答案 1 :(得分:0)
因为我知道Perl,所以我倾向于将它用于单行:
perl -e 'foreach (<>) { $n++; if ($l{$_}++) { print "$n\n"; last; } }' < infile
这将打印到STDOUT第一个副本的行号。