ファイルから別の順序で重複した行を削除します。

ファイルから別の順序で重複した行を削除します。

私のファイルは次のとおりです。

alice, bob
bob, cat
cat, dennis
cat, bob
dennis, alice

同じ単語を逆順に繰り返す行を削除したいです。この例では、bob, catcat, bobが繰り返されるので、cat bobを削除し、出力は次のようになります。

alice, bob
bob, cat
cat, dennis
dennis, alice

どうすればいいですか?

ベストアンサー1

ソートされた要素として入力されたハッシュを使用できます。

$ perl -lne 'print unless $h{join ",", sort split /, /, $_}++' file
alice, bob
bob, cat
cat, dennis
dennis, alice

正確に2つのフィールドについては、このようなもので十分です。

$ awk -F', ' '!seen[$2 FS $1]; {seen[$0]++}' file
alice, bob
bob, cat
cat, dennis
dennis, alice

おすすめ記事