私のファイルは次のとおりです。
alice, bob
bob, cat
cat, dennis
cat, bob
dennis, alice
同じ単語を逆順に繰り返す行を削除したいです。この例では、bob, cat
とcat, 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