ターミナル上で特定のキーワードがファイルの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

インフラエンジニア(…のつもり)。 仕事で使うならクライアントはWindowsよりはUNIXの方が好き。 大体いつも眠い。

Leave a Comment

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

*