データをソートせずに一意の結果のみを取得する方法は?

データをソートせずに一意の結果のみを取得する方法は?
$ cat data.txt 
aaaaaa
aaaaaa
cccccc
aaaaaa
aaaaaa
bbbbbb
$ cat data.txt | uniq
aaaaaa
cccccc
aaaaaa
bbbbbb
$ cat data.txt | sort | uniq
aaaaaa
bbbbbb
cccccc
$

私が必要とする結果は元のファイルのすべての行を表示し、ファイルの元のステートメントの順序を維持しながら、すべての重複項目(連続行だけでなく)を削除します。

この例では、私が実際に探している結果は次のとおりです。

aaaaaa
cccccc
bbbbbb

一般に、この一般的なタスクをどのように実行しますかuniq

ベストアンサー1

perl -ne 'print unless $seen{$_}++' data.txt

または必ず持っている必要がある場合役に立たない使用cat:

cat data.txt | perl -ne 'print unless $seen{$_}++'

以下はawkPerlのないシステムの翻訳です:

awk '!seen[$0]++' data.txt
cat data.txt | awk '!seen[$0]++'

おすすめ記事