我想在文本文件中找到第一行重複的行。查找文件中的第一條重複行
我經常查找文件中重複行的方法是使用uniq的,這需要一個排序的文件,所以我:
sort inputfile | uniq -c | sort -nr > outputfile
計算所有的副本和按遞減順序打印。
通過排序,然後使用uniq,我失去了原始的重複發生時/在哪裏,而現在我只關心哪一行是第一個重複。
任何想法?
我想在文本文件中找到第一行重複的行。查找文件中的第一條重複行
我經常查找文件中重複行的方法是使用uniq的,這需要一個排序的文件,所以我:
sort inputfile | uniq -c | sort -nr > outputfile
計算所有的副本和按遞減順序打印。
通過排序,然後使用uniq,我失去了原始的重複發生時/在哪裏,而現在我只關心哪一行是第一個重複。
任何想法?
awk '{ if(seen[$0]) { print; exit } seen[$0] = 1 }' file
這將跟蹤每一行,然後打印出它以前看到的第一行。如果您想要行號,請打印NR。
awk '{ if(seen[$0]) { print NR, $0; exit } seen[$0] = 1 }' file
你可以打高爾夫球:'awk's [$ 0] ++ {print; exit}'file' - 使用後增量,所以這是一條線的第一次重複。 –
我不認爲這是正確的:'cat -n f | sort -k2 -k1,1 | uniq -df1'返回*第一行*號,*有*重複,而不是第二次被看到。你甚至不能'sort -k2 -k1,1r',因爲如果有超過2倍的行出現,它會給你*最後*行號。 –
因爲我知道Perl中,我傾向於使用它的俏皮話:
perl -e 'foreach (<>) { $n++; if ($l{$_}++) { print "$n\n"; last; } }' < infile
這打印到stdout第一個重複的行號。
提示:'cat -n'。 –