![ファイルから重複したアイテムを削除する[閉じる]](https://linux33.com/image/155035/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%8B%E3%82%89%E9%87%8D%E8%A4%87%E3%81%97%E3%81%9F%E3%82%A2%E3%82%A4%E3%83%86%E3%83%A0%E3%82%92%E5%89%8A%E9%99%A4%E3%81%99%E3%82%8B%5B%E9%96%89%E3%81%98%E3%82%8B%5D.png)
次のファイル.txtがあります。
Plummet
Cherist the day
--
The Transatlatins <-----------duplicate
Mysteriosa <-----------duplicate
--
Angel City;Lara McAllen
Love me right
--
The Transatlatins
Mysteriosa
順序を変更せずに重複項目を削除する方法は?行にスペースがあり、試してみましたが、sort
順序を変更しましたが、重複uniq
した内容は適用されません。
予想される結果:
Plummet
Cherist the day
--
Angel City;Lara McAllen
Love me right
--
The Transatlatins
Mysteriosa
答え1
仮説このファイルの形式は次のとおりです。
field1\n
field2\n
\n
field1\n
field2\n
\n
つまり、サンプルファイルの最後の行は次のようになります。
Mysteriosa Mysteriosa
\n
まあ、最後の項目の後に改行文字が付いてくるなら、これがうまくいくでしょう。
sed '$!N;$!N;s/\n/:/g' file | nl -s"|" | sort -t '|' -k2 | awk -F"|" '!_[$2]++' | sort -n | sed -e 's/.*|//' -e 's/:/\n/g'
答え2
注文する:
awk '{if (!seen[$1,$2]++)print $0}' filename