重複行削除
Nid: 826
コマンドラインやエディタによる、テキストファイルから重複行を削除する方法です。
1 . 入力データ
データ作成。
$ cat << EOF > manga.txt > Dragon Ball(ドラゴンボール) > Naruto(ナルト) > Fullmetal Alchemist(鋼の錬金術師) > Rurouni Kenshin(るろうに剣心 -明治剣客浪漫譚-) > One Piece(ワンピース) > Monster > Dragon Ball(ドラゴンボール) > Nausicaä of the Valley of the Wind(風の谷のナウシカ) > Hunter × Hunter > EOF
「ドラゴンボール」が重複
$ cat manga.txt Dragon Ball(ドラゴンボール) Naruto(ナルト) Fullmetal Alchemist(鋼の錬金術師) Rurouni Kenshin(るろうに剣心 -明治剣客浪漫譚-) One Piece(ワンピース) Monster Dragon Ball(ドラゴンボール) Nausicaä of the Valley of the Wind(風の谷のナウシカ) Hunter × Hunter
2 . sortコマンド重複行削除
$ sort -u manga.txt Dragon Ball(ドラゴンボール) Fullmetal Alchemist(鋼の錬金術師) Hunter × Hunter Monster Naruto(ナルト) Nausicaä of the Valley of the Wind(風の谷のナウシカ) One Piece(ワンピース) Rurouni Kenshin(るろうに剣心 -明治剣客浪漫譚-)
3 . sort+uniqコマンド重複行削除
$ sort manga.txt | uniq Dragon Ball(ドラゴンボール) Fullmetal Alchemist(鋼の錬金術師) Hunter × Hunter Monster Naruto(ナルト) Nausicaä of the Valley of the Wind(風の谷のナウシカ) One Piece(ワンピース) Rurouni Kenshin(るろうに剣心 -明治剣客浪漫譚-)
uniq の c オプションで重複行の確認ができる。
$ sort manga.txt | uniq -c 2 Dragon Ball(ドラゴンボール) 1 Fullmetal Alchemist(鋼の錬金術師) 1 Hunter × Hunter 1 Monster 1 Naruto(ナルト) 1 Nausicaä of the Valley of the Wind(風の谷のナウシカ) 1 One Piece(ワンピース) 1 Rurouni Kenshin(るろうに剣心 -明治剣客浪漫譚-)
4 . awkコマンド重複行削除 ソート不要
$ awk '!x[$0]++' manga.txt Dragon Ball(ドラゴンボール) Naruto(ナルト) Fullmetal Alchemist(鋼の錬金術師) Rurouni Kenshin(るろうに剣心 -明治剣客浪漫譚-) One Piece(ワンピース) Monster Nausicaä of the Valley of the Wind(風の谷のナウシカ) Hunter × Hunter
5 . viエディタ重複行削除
:sort u
Dragon Ball(ドラゴンボール) Fullmetal Alchemist(鋼の錬金術師) Hunter × Hunter Monster Naruto(ナルト) Nausicaä of the Valley of the Wind(風の谷のナウシカ) One Piece(ワンピース) Rurouni Kenshin(るろうに剣心 -明治剣客浪漫譚-)
6 . perlワンライナー重複行削除
$ perl -ne 'print if ! $x{$_}++' manga.txt Dragon Ball(ドラゴンボール) Naruto(ナルト) Fullmetal Alchemist(鋼の錬金術師) Rurouni Kenshin(るろうに剣心 -明治剣客浪漫譚-) One Piece(ワンピース) Monster Nausicaä of the Valley of the Wind(風の谷のナウシカ) Hunter × Hunter