답변:
다음 awk
명령을 사용합니다 .
string="text,text,text,text"
char=","
awk -F"${char}" '{print NF-1}' <<< "${string}"
문자열을 분할하고 $char
결과 필드 수에서 1을 뺀 값을 인쇄합니다.
쉘이 <<<
연산자를 지원하지 않는 경우 다음을 사용하십시오 echo
.
echo "${string}" | awk -F"${char}" '{print NF-1}'
$(grep -o "$needle" < filename | wc -l)
wc -l
그냥 사용 grep -c
하면 bsd grep 및 linux grep 모두에서 작동합니다.
grep -c
는 일치하는 줄 수만 출력합니다. 한 줄에 여러 일치 항목을 계산하지 않습니다.
예를 들어 다음과 같이 다른 모든 문자를 제거하고 남은 것을 계산할 수 있습니다.
var="text,text,text,text"
res="${var//[^,]}"
echo "$res"
echo "${#res}"
인쇄됩니다
,,,
3
또는
tr -dc ',' <<<"$var" | awk '{ print length; }'
또는
tr -dc ',' <<<"$var" | wc -c #works, but i don't like wc.. ;)
또는
awk -F, '{print NF-1}' <<<"$var"
또는
grep -o ',' <<<"$var" | grep -c .
또는
perl -nle 'print s/,//g' <<<"$var"
y="${x//[^s|S]}"; echo "${#y}"
wc
않니? 골프!
echo -n some line | wc -l
tr -dc ',' <<<"$var" | wc -c
tr
및 wc
명령 을 결합하여 수행 할 수 있습니다 . 예를 들어, e
문자열에서 계산 하려면 referee
echo "referee" | tr -cd 'e' | wc -c
산출
4
설명 : Command tr -cd 'e'
는 'e'이외의 모든 문자를 제거하고 Command wc -c
는 나머지 문자를 계산합니다.
여러 줄의 입력도이 솔루션에 적합합니다. 예를 들어 command cat mytext.txt | tr -cd 'e' | wc -c
can counts e
in the file mytext.txt
과 같이 파일에 여러 줄이 포함될 수 있다고 생각할 수도 있습니다.
awk는 서버에 있으면 잘 작동합니다.
var="text,text,text,text"
num=$(echo "${var}" | awk -F, '{print NF-1}')
echo "${num}"
awk -F,
A의 모습 ,
. 다음을 수행 할 수 있습니다.awk -F"${your_char}"
예를 들어 우리는 t
echo "test" | awk -v RS='t' 'END{print NR-1}'
또는 python
python -c 'print "this is for test".count("t")'
또는 더 나은 방법으로 스크립트를 동적으로 만들 수 있습니다. awk
echo 'test' | awk '{for (i=1 ; i<=NF ; i++) array[$i]++ } END{ for (char in array) print char,array[char]}' FS=""
이 경우 출력은 다음과 같습니다.
e 1
s 1
t 2