重複行を整理する sort と uniq コマンド

今回、日経Linux 2008-9 におもしろい記事が載っていたので
実験してみました

とはいっても、簡単なコマンドの組み合わせですが
今回、使用したコマンドは
重複行を削除するコマンド uniq コマンド
107.uniqコマンドについてにわかりやすい説明が載っています)
そして
ファイルの行を並び替える sortコマンド
(【 sort 】 行を並び替えるが参考になります)
を使っています
最初に、
vi travel.txt
で内容を作成します
内容は単純に、国の名前を適当に並べたものです
アメリカ
イギリス
フランス
ドイツ
中国
インド
ロシア
日本
アメリカ
シンガポール
ドイツ
フランス
アメリカ
中国
などというように、適当に書き込みます
これに
$ uniq travel.txt
と実行すると
隣り合った部分が削除されて画面に表示されます
ただし、元のファイルはそのままです
これをさらに、sort コマンドと組み合わせると
重複する文字を削除できるようになります
$ sort travel.txt | uniq
これで、重複する文字を削除して表示できます
ちなみに、削除だけなら、sortコマンドに -u オプションをつければできます
$sort -u travel.txt
これでOKです
uniq コマンドは、削除するより、重複した文字をカウントする機能
を使うことがメインとなりそうです
-c オプションをつけると、この機能が使えます
$ sort travel.txt | uniq -c | sort -nr
とすれば、重複した文字の多い順番に並べれます
さらに。
$ sort travel.txt | uniq -c | sort -nr | head -n 5
とすれば、上位3つまで表示するようにできます
この機能を応用すると、アンケートや選挙のようなことができそうです

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です