アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (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`
こっちの方がわかりやすいか。
    • good
    • 1
この回答へのお礼

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

お礼日時:2009/03/24 10:56

どこまで使ってよくて, どこからは使っちゃいけないんだろ....


Perl とか awk とかを使えば一瞬なんだけど....
echo して tr から wc とかでいける?
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/03/24 10:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています