たとえば、私の入力はです。数字の繰り返し回数を取得12451
する必要があります。1
答え1
GNUの使用grep
:
$ echo 12451 | grep -o . | grep -c 1
2
GNUの使用awk
:
$ echo 12451 | gawk -v num=1 'BEGIN { FS = "" } {for (i = 1; i <= NF; i++) if ($i == $num) count++ } END {print $count}'
2
POSIX awkを次のように使用してください。このコメントに提案してください:
$ echo 12451 | awk '{print gsub(/1/,"")}'
2
答え2
そしてzsh
:
$ string=12451
$ echo ${#string//[^1]}
2
答え3
データが標準入力(Pipedなどecho
)に到着すると仮定します。
LC_ALL=C tr -d -c '1' | LC_ALL=C wc -c
存在しない文字をすべて削除し、1
残りの文字数を数えます。
データがシェル変数に保存されているとします。value
たとえば、次のようになります。bash
ones=${value//[\!1]/}; echo "${#ones}"
これは実際には最初のコマンドと同じことを行います。1
値から文字以外のすべての項目を削除し、結果の$value
文字列を新しい変数に割り当て、ones
文字列の長さを印刷します。
答え4
grepとwcを使用して行数を計算する別の方法は次のとおりです。
grep -o '1' <<< 12451 | wc -l