我想创建一个脚本,它将计算字符串中的符号" word blah-blah word再一次单词"。它将在" word"之前计算符号。只有和每个"字"应该写成新的字符串。所以脚本的输出应该是这样的:
word 0 ## (no symbols)
word 9 ##blah-blah
word 11 ##one more time
我现在所有的一切:
#!/bin/bash
$word="word blah-blah word one more time word again"
echo "$word" | grep -o word
输出只显示我"字"来自$ word。我之前如何计算字数"字"?
答案 0 :(得分:2)
bash
解决方案:
word="word blah-blah word one more time word again"
c=0
for w in $word;do
[[ $w != "word" ]] && (( c+= ${#w} )) && continue
echo $w $c
c=0
done
来自bash
man :
$ {#}参数
参数长度。参数值的字符长度被替换。如果参数是*或@,则替换的值是位置参数的数量。如果parameter是由*或@下标的数组名,则替换的值是数组中元素的数量。
<强>解释强>
for w in $word;do
:用于将单词字符串分隔为单词变量的空格作为分隔符: w 。
[[ $w != "word" ]] && (( c+= ${#w} )) && continue
:如果w
不是word
,则将currenttring(${#w}
)中的字符数存储到c
计数器中,然后继续下一个单词({ {1}})无需进一步处理。
当建立文字字时,只需打印计数器的值并初始化它(continue
)
<强>结果
c=0