Text-Processing
從文件中刪除順序不同的重複行
我的文件是這樣的:
alice, bob bob, cat cat, dennis cat, bob dennis, alice
我想刪除以相反順序重複相同單詞的行。在這個例子中,
bob, cat
並且cat, bob
重複,所以 cat bob 應該被刪除,我的輸出應該是alice, bob bob, cat cat, dennis dennis, alice
我怎樣才能做到這一點?
您可以使用在已排序元素上鍵入的雜湊:
$ 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
慣用的 awk 答案:
$ awk -F', ' '!seen[$1>$2 ? $1 FS $2 : $2 FS $1]++' file alice, bob bob, cat cat, dennis dennis, alice
任意數量的欄位的一般方法是對它們進行排序並使用排序列表作為查看的索引
$$ $$.