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

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

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

こういった場合は、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個