ファイル内のすべての行が一意であることを確認する

ファイル内のすべての行が一意であることを確認する

次の行を含むテキストファイルがあります。

This is a thread  139737522087680
This is a thread  139737513694976
This is a thread  139737505302272
This is a thread  139737312270080
.
.
.
This is a thread  139737203164928
This is a thread  139737194772224
This is a thread  139737186379520

各行の一意性をどのように確認できますか?

メモ:目標はファイルをテストすることであり、重複した行がある場合はファイルを変更することではありません。

答え1

奇妙な解決策:

awk 'a[$0]++{print "dupes"; exit(1)}' file && echo "no dupes"

答え2

[ "$(wc -l < input)" -eq "$(sort -u input | wc -l)" ] && echo all unique

答え3

使用sort/ uniq:

sort input.txt | uniq

重複した行のみを確認するには、-duniqオプションを使用してください。重複した行のみが表示され、そうでない場合は何も表示されません。

sort input.txt | uniq -d

答え4

私は通常sortファイルを送信し、重複するアイテムのuniq数を数えるために使用し、sort再びリストの下部に重複するアイテムを表示します。

提供した例のコピーを追加しました。

$ sort thread.file | uniq -c | sort
      1 This is a thread  139737186379520
      1 This is a thread  139737194772224
      1 This is a thread  139737203164928
      1 This is a thread  139737312270080
      1 This is a thread  139737513694976
      1 This is a thread  139737522087680
      2 This is a thread  139737505302272

しばらくマニュアルページを読んでいないので、uniqすぐに代替案を見つけました。重複項目のみを表示するには、次のように2番目のソートは必要ありません。

$ sort thread.file | uniq -d
This is a thread  139737505302272

関連情報