ファイルから重複した行を削除したいのですが、ファイルに1つの項目を保持したいと思います。
ファイルの例:
this is a string
test line
test line 2
this is a string
上記の例では、「これは文字列です」という1つの項目を削除したいと思います。
これを行う最良の方法は何ですか?
ベストアンサー1
デモファイルには以下stuff.txt
が含まれます。
one
two
three
one
two
four
five
行の並べ替えが気に入らないとし、ファイルから重複行を削除します。
$ sort -u stuff.txt
five
four
one
three
two
説明:ソートのために送信されるuフラグは、ファイルの行をソートして一意性を強制することを意味します。
最初の行を維持しながら元の順序を維持しながら、ファイルから重複行を削除します。
$ cat -n stuff.txt | sort -uk2 | sort -nk1 | cut -f2-
one
two
three
four
five
説明:catに渡されたnフラグは、各行の左側に行番号とスペースを追加します。最初のソートは一意のソートを意味しますが、最初の単語の後にのみ対応し、2番目のソートコマンドは私たちを使用することを意味します。ステップ1で保存した内容は元の順序で保存する必要があり、最終的に最初の単語が切り捨てられました。
ファイルから重複した行を削除して順序を維持し、最後の行を維持します。
tac stuff.txt > stuff2.txt; cat -n stuff2.txt | sort -uk2 | sort -nk1 | cut -f2- > stuff3.txt; tac stuff3.txt > stuff4.txt; cat stuff4.txt
three
one
two
four
five
説明:以前と同じですが、tacはファイルを反転して目的の結果を得ます。