たくさんの行を含むファイルがあり、いくつかが繰り返されているとします。
line1
line1
line1
line2
line3
line3
line3
一意の行のリストを生成するために使用する必要があるLinuxコマンドは次のとおりです。
line1
line2
line3
ファイルがソートされていない場合、つまり繰り返し行がブロックにない場合、これは変更されますか?
出力がソートされてもかまわない場合は、
sort -u
これにより、重複が並べ替えられて削除されます
cat
はコンテンツを出力し、sort
にパイプしてそれらをソートし、uniq
にパイプして一意の値を出力します。
cat test1.txt | sort | uniq
ファイルの内容がすでにソートされている場合は、sort
の部分を実行する必要はありません。
一意の行を使用して新しい並べ替えファイルを作成します。
sort -u file >> unique_file
一意の行を含む新しいファイルを作成します(ソートされていません):
cat file | uniq >> unique_file
順序を気にしない場合、最良の解決策は実際には次のとおりです。
sort -u file
大文字を無視するも必要な場合は、それを使用できます(その結果、すべての文字が大文字に変換されます):
sort -fu file
さらに良いアイデアのようです次のコマンドを使用することです:
uniq file
また、大文字と小文字を無視する(結果として、大文字と小文字を変更せずに、重複の最初の行が返されます):
uniq -i file
ただし、この場合、使用する場合とはまったく異なる結果が返される場合がありますsort
command、なぜならuniq
コマンドは、隣接していない限り、繰り返される行を検出しません。