-1
文字列中に指定された文字が現れる回数を知る必要があります。シェルスクリプト:与えられた文字が文字列に何回現われるかを数えます。
ソリューションは、ほとんどのPOSIX互換シェルインタープリタの下で実行できるはずであり、できるだけ依存性が少ない必要があります。
文字列中に指定された文字が現れる回数を知る必要があります。シェルスクリプト:与えられた文字が文字列に何回現われるかを数えます。
ソリューションは、ほとんどのPOSIX互換シェルインタープリタの下で実行できるはずであり、できるだけ依存性が少ない必要があります。
ここだけecho
、tr
、test
と${#
に依存シェル関数です:
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")" ;}
あなたの「ユースケース」は情報のみを必要とする(SCNR) –
'エコー「STR」| perl -e '(sub {my $ q = <>; print(length($ q) - 1);}) - >()' 'もしあなたが駄目になりたいなら' echo "hello、world" | perl -e 'print(length(<>) - 1)' ' – Dmitry
ドミトリーさん、私はできるだけ依存性を少なくする必要があることを明確にするために質問を編集しました。 Perlをインストールすることは、echo、tr、test、$ {##のみを使用するよりもはるかに多いです。 – Elifarley