bashを使用して文字列やファイル内の特定の文字の出現回数をカウントする方法
以下に、ファイルや文字列内の特定の文字の出現回数を数える方法に関するいくつかのヒントを示します。文字列「Hello Bash」があるとします:
STRING="Hello Bash"
echo $STRING
Hello Bash
bashシェルを使用して、任意の文字の出現回数を数えることができます。例えば、文字lの出現回数を数えましょう:
echo $STRING | sed -e 's/\(.\)/\1\n/g' | grep l | wc -l
2
sedコマンドは、最初に指定された文字列を複数行に分割します。各行には1つの文字が含まれています:
echo $STRING | sed -e 's/\(.\)/\1\n/g'
H
e
l
l
o
B
a
s
h
その後、特定の文字だけを検索するために grep コマンドを使用できます。この場合、文字 l のみを印刷します。
echo $STRING | sed -e 's/\(.\)/\1\n/g' | grep l
l
l
残されたのは、単純に行数を数えるためにwc -lを使うことです:
echo $STRING | sed -e 's/\(.\)/\1\n/g' | grep l | wc -l
2
同じ戦略は、ファイル内の文字の出現回数をカウントするためにも使用できます。以下のbashシェルコマンドは、ファイル/etc/services内に文字lが何回現れるかをカウントします:
$ cat /etc/services | sed -e 's/\(.\)/\1\n/g' | grep l | wc -l
9298
もう一つの文字の出現回数を数えるための代替手段は、grepの --only-matching または -o オプションを使用して、一致する文字のみを印刷することです:
grep -o l /etc/services | wc -l
9298