• ベストアンサー

Bシェル 文字列に含まれる特定文字のカウント

文字列の中に特定の文字が何個含まれているのかを知りたいです。wcやgrep を使ってみましたが、うまくいきません。教えてください。 例えば「123456789abc1defg0123456789」 の中に「1」は3個含まれているってのを調べたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10357)
回答No.2

文字列の中には空白文字が無いとすると、bashの組み込み機能だけで出来ます。 #!/bin/bash A=123456789abc1defg0123456789 B=/$A/ ←先頭や末尾に特定文字が含まれている場合の考慮 IFS=1 ←ここに特定文字(一文字に限る) set -- $B echo $(($#-1)) 空白や記号が含まれている場合で、bashも無い場合 #!/bin/sh A=123456789abc1defg0123456789 LENA=`expr length "$A"` B=`echo "$A" | sed s/1//g` ←削除すると短くなる LENB=`expr length "$B"` echo `expr $LENA - $LENB` こっちの方がわかりやすいか。

heppocose
質問者

お礼

notnotさん、ありがとうございました。 文字列の長さの差分で数を数えるんですね。とても参考になりました。

その他の回答 (1)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

どこまで使ってよくて, どこからは使っちゃいけないんだろ.... Perl とか awk とかを使えば一瞬なんだけど.... echo して tr から wc とかでいける?

heppocose
質問者

お礼

ご回答ありがとうございました。Perlは使った事ないもので・・ awkでも試みましたが分かりませんでした。

関連するQ&A

専門家に質問してみよう