如何计算字符串中的特定字符 - CSH

How to count specific characters in string - CSH

如何计算字符串中的特定字符 - CSH。

set my_path = "/home/user/docs/files"
set sum = ???

比方说,我们需要计算'/'

如果您不能使用任何外部工具,您只能使用 tcsh(使用丑陋的解决方法):

$ set my_path = "/home/user/docs/files"
$ set tmp= ( ${my_path:as,/, x,} )
$ set sum=${#tmp}
$ echo ${sum}
4

set tmp= ( ${my_path:as,/, x,} )的一点解释:我们将 (s) 所有 (a) / 字符替换为 x (space和 x) 并从这些单词创建一个数组(由 spaces 分隔)。 ${#tmp} 计算 ${tmp} 中的单词数。查看更多man tcsh(章节"History substitution")。

我认为这个解决方案非常丑陋,并且 仅适用于您的情况 (例如,如果您删除第一个 /,则不会产生所需的值)。

我希望你可以使用外部工具 - 仅 grepwc:

$ set sum=`echo ${my_path} | grep -o '/' | wc -l`
$ echo ${sum}
4

这个版本更好,因为它不需要任何解决方法并且在其他情况下也能正常工作。如果可以请选择这个解决方案。