如何计算字符串中的特定字符 - 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")。
我认为这个解决方案非常丑陋,并且 仅适用于您的情况 (例如,如果您删除第一个 /
,则不会产生所需的值)。
我希望你可以使用外部工具 - 仅 grep
和 wc
:
$ set sum=`echo ${my_path} | grep -o '/' | wc -l`
$ echo ${sum}
4
这个版本更好,因为它不需要任何解决方法并且在其他情况下也能正常工作。如果可以请选择这个解决方案。
如何计算字符串中的特定字符 - 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")。
我认为这个解决方案非常丑陋,并且 仅适用于您的情况 (例如,如果您删除第一个 /
,则不会产生所需的值)。
我希望你可以使用外部工具 - 仅 grep
和 wc
:
$ set sum=`echo ${my_path} | grep -o '/' | wc -l`
$ echo ${sum}
4
这个版本更好,因为它不需要任何解决方法并且在其他情况下也能正常工作。如果可以请选择这个解决方案。