ログに出力された件数を集計するときによく使うコマンドを忘れないように書いておく。
例えば、下記のサンプルで名前の多い順に並び替えたいようなとき
sample.txt
name:ヤムチャ skill:狼牙風風拳
name:孫悟空 skill:かめはめ波
name:ピッコロ skill:魔貫光殺砲
name:ヤムチャ skill:繰気弾
name:孫悟空 skill:元気玉
name:クリリン skill:気円斬
name:ヤムチャ skill:かめはめ波
name:クリリン skill:かめはめ波
name:孫悟空 skill:ジャン拳
name:ヤムチャ skill:新狼牙風風拳
コマンドはこうなる。
grep -o "name:\S*" sample.txt | sort | uniq -c | sort -r
◆-o:マッチした部分だけを抽出する
◆uniq:重複を削除する。
※隣接した重複のみ削除するので先にsortしている。
→-c:重複の数を表示する。
◆sort:並び替える
→-r:降順に表示する。
結果はこうなる。
$ grep -o "name:\S*" sample.txt | sort | uniq -c | sort -r
4 name:ヤムチャ
3 name:孫悟空
2 name:クリリン
1 name:ピッコロ
名前だけが欲しい場合はこう。
grep -o "name:\S*" sample.txt | cut -d ":" -f 2 | sort | uniq -c | sort -r
$ grep -o "name:\S*" sample.txt | cut -d ":" -f 2 | sort | uniq -c | sort -r
4 ヤムチャ
3 孫悟空
2 クリリン
1 ピッコロ
◆cut:タブ区切りでフィールドを選択して出力する
→-d:デリミタを指定。
→-f:抽出するフィールドの番号を指定する。上記コマンドで1を指定した場合は"name"が抽出される。