次の行を含むテキストファイルがあります。
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
重複した行のみを確認するには、-d
uniqオプションを使用してください。重複した行のみが表示され、そうでない場合は何も表示されません。
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