在bash中计算没有空格的符号

时间:2018-03-26 06:49:15

标签: bash count wc

我想创建一个脚本,它将计算字符串中的符号" 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。我之前如何计算字数"字"?

1 个答案:

答案 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