ターミナル上で特定のキーワードがファイルのX行目に何個あるのかを集計する
Pocket

ふと、特定のファイルに対して、指定したキーワードが◯行目に何個含まれているのかをターミナル上で取得できないかなと思ったので試してみた。
例えば、以下のようなファイルで、各行にあるABCの数をそれぞれ求める場合。

blacknon@BS-PUB-DEVELOP:~$ cat test3.txt
ABC123DEF431ABC
112rtr333ABC
ABC3435dfs343ABCABC
ABC23435ABC
ABC334535
g4wsdgr
ABCt3wt3
Sponsored Links

こういった場合は、grepのnオプション、oオプションを利用することで、比較的簡単に求める事が可能だ。

grep -no キーワード | uniq -c

blacknon@BS-PUB-DEVELOP:~$ cat test3.txt
ABC123DEF431ABC
112rtr333ABC
ABC3435dfs343ABCABC
ABC23435ABC
ABC334535
g4wsdgr
ABCt3wt3
blacknon@BS-PUB-DEVELOP:~$ grep -no ABC test3.txt
1:ABC
1:ABC
2:ABC
3:ABC
3:ABC
3:ABC
4:ABC
4:ABC
5:ABC
7:ABC
blacknon@BS-PUB-DEVELOP:~$ grep -on ABC test3.txt | uniq -c
2 1:ABC
1 2:ABC
3 3:ABC
2 4:ABC
1 5:ABC
1 7:ABC
blacknon@BS-PUB-DEVELOP:~$ grep -no ABC test3.txt | uniq -c | awk '{print $2,$1"個"}'
1:ABC 2個
2:ABC 1個
3:ABC 3個
4:ABC 2個
5:ABC 1個
7:ABC 1個

 

Pocket

Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

Leave a Comment

メールアドレスが公開されることはありません。

*