下記のようなテキストを考える。誰が最もログインしているか知りたい。
$ cat test.txt
"login"=>"admin"
"login"=>"guest"
"login"=>"guest"
"login"=>"mike"
"login"=>"admin"
"login"=>""
"login"=>""
"login"=>""
"login"=>""
"login"=>"taro"
"login"=>"jiro"
"login"=>"jiro"
重複行のカウント。
$ uniq -c test.txt
1 "login"=>"admin"
2 "login"=>"guest"
1 "login"=>"mike"
1 "login"=>"admin"
4 "login"=>""
1 "login"=>"taro"
2 "login"=>"jiro"
sortコマンドで数字順に並び替え(ランキング)。
$ uniq -c test.txt | sort -nr
4 "login"=>""
2 "login"=>"jiro"
2 "login"=>"guest"
1 "login"=>"taro"
1 "login"=>"mike"
1 "login"=>"admin"
1 "login"=>"admin"
bashのヒアドキュメントを利用するともっと便利。
$ uniq -c << EOS | sort -nr
> "login"=>"admin"
> "login"=>"guest"
> "login"=>"guest"
> "login"=>"mike"
> "login"=>"admin"
> "login"=>""
> "login"=>""
> "login"=>""
> "login"=>""
> "login"=>"taro"
> "login"=>"jiro"
> "login"=>"jiro"
> EOS
4 "login"=>""
2 "login"=>"jiro"
2 "login"=>"guest"
1 "login"=>"taro"
1 "login"=>"mike"
1 "login"=>"admin"
1 "login"=>"admin"