【问题标题】:How to count specific characters in string - CSH如何计算字符串中的特定字符 - CSH
【发布时间】:2017-10-26 17:21:37
【问题描述】:

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

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

比方说,我们需要数'/'

【问题讨论】:

标签: linux string shell csh tcsh


【解决方案1】:

如果您不能使用任何外部工具,您可以只使用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(空格和 x),并从这些单词(由空格分隔)创建一个数组。 ${#tmp} 计算 ${tmp} 中的单词。查看更多man tcsh(“历史替换”一章)。

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

我希望你可以使用外部工具——只有grepwc

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

这个版本更好,因为不需要任何变通方法并且可以在其他情况下使用。如果可以,请选择此解决方案。

【讨论】:

  • 看起来不错,但是当我运行脚本时,这个错误来了:grep: 非法选项--o
  • 请注意:-o 而不是--o!只有一个- 字符:) 这个选项的长版本是--only-matching
  • 我检查了“man grep”,我的 grep 不支持选项 -o。我不明白:(
  • 你的 grep 是什么版本的? GNU grep 支持它(假设您的版本是 GNU,因为您的问题有 linux 标记)。
  • GNU grep 2.0 版
猜你喜欢
  • 1970-01-01
  • 2014-01-30
  • 2020-05-29
  • 2012-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-23
  • 1970-01-01
相关资源
最近更新 更多