想知道如何计算一行中的特定字符。
举个例子:
Hey . My . Name . Is . Bash
使用char“。”应该返回:4
我们被告知grep会很有用,但无法找到一个好方法。
由于
答案 0 :(得分:1)
有很多方法。
就像这样:
$ echo "Hey . My . Name . Is . Bash" | grep -o "\." | wc -w
4
或双grep:
$ echo "Hey . My . Name . Is . Bash" | grep -o "\." | grep -c "\."
4
答案 1 :(得分:1)
尝试:
$ echo "Hey . My . Name . Is . Bash" | grep -o '\.' | wc -l
4
Pure bash:
$ s="Hey . My . Name . Is . Bash"
$ m=${s//[^.]/}
$ echo ${#m}
4
另一个:
$ tr -C -d [\.] <<< $s | wc -c
4
答案 2 :(得分:1)
$ echo "Hey . My . Name . Is . Bash" | tr -cd . | wc -m
我相信在这里使用tr
会更便宜。
答案 3 :(得分:1)
纯粹的bash:
str="Hey . My . Name . Is . Bash"
len=${#str}
str=${str//./}
len2=${#str}
count=$((len-len2))
echo "There are $count '.' in '$str'"
工作原理:
${#var_name}
扩展为变量var_name ${var_name//./}
用空字符串.
的所有出现
答案 4 :(得分:0)
您无需使用两个流程。
如果你想在一行中计算特殊(单个)字符:
kent$ echo "Hey . My . Name . Is . Bash"|awk '{print split($0,a,".")-1}'
4
或:
kent$ echo "Hey . My . Name . Is . Bash"|awk '{print gsub("\\.","")}'
4