2016-06-16 22 views
-1

文字列中に指定された文字が現れる回数を知る必要があります。シェルスクリプト:与えられた文字が文字列に何回現われるかを数えます。

ソリューションは、ほとんどのPOSIX互換シェルインタープリタの下で実行できるはずであり、できるだけ依存性が少ない必要があります。

+0

あなたの「ユースケース」は情報のみを必要とする(SCNR) –

+0

'エコー「STR」| perl -e '(sub {my $ q = <>; print(length($ q) - 1);}) - >()' 'もしあなたが駄目になりたいなら' echo "hello、world" | perl -e 'print(length(<>) - 1)' ' – Dmitry

+0

ドミトリーさん、私はできるだけ依存性を少なくする必要があることを明確にするために質問を編集しました。 Perlをインストールすることは、echo、tr、test、$ {##のみを使用するよりもはるかに多いです。 – Elifarley

答えて

1

ここだけechotrtest${#に依存シェル関数です:

charcount() { 
    local char="$1"; shift; 
    result="$(echo "$*" | tr -cd "$char")"; result=${#result}; 
    test $result -gt 0 && echo $result 
} 

使用例:

# charcount 'a' 'test' || echo 'char not found' 
char not found 

# charcount 'a' 'a test a' && echo 'found' 
2 
found 

そしてここでは、唯一の文字かどうかをテストすることができ、より具体的なソリューションです文字列に存在するかどうか。解決するために少し簡単になり、ゼロまたは(1-または-以上)アスタリスクがある場合

charexists() { test "$(echo "$2" | tr -cd "$1")" ;} 
関連する問題