数字から特定の数字の繰り返しを探す[閉じる]

数字から特定の数字の繰り返しを探す[閉じる]

たとえば、私の入力はです。数字の繰り返し回数を取得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

関連情報