45
43

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

集計に使える簡単なgrepこまんど

Posted at

:dog2: ログに出力された件数を集計するときによく使うコマンドを忘れないように書いておく。

例えば、下記のサンプルで名前の多い順に並び替えたいようなとき

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"が抽出される。

45
43
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
45
43

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?