예를 들어, 내 입력은 입니다 . 숫자의 반복 횟수를 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