Answers:
我将使用以下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"
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
计算剩余的字符。
多行输入也适用于此解决方案,例如命令cat mytext.txt | tr -cd 'e' | wc -c
可以e
在文件中计数mytext.txt
,甚至认为文件可能包含多行。