【问题标题】:Bash: Search for specific special character in stringBash:在字符串中搜索特定的特殊字符
【发布时间】:2013-02-27 12:43:48
【问题描述】:

我想检查我的字符串中是否存在特殊字符 *。例如,我看过但都提到了[^[A..za..z0..9]]..,但这会给你字符串中的所有特殊字符,但不完全是你正在寻找的字符。 因此,如果我的字符串包含* or [:space:]* 或任何后跟* (and not /* or */) 的字符,那么结果应该为真,否则为假。

Ex: 
Uint_8* A
Uint_16 * A
ABC * C    /*blablabla*/
ABC* C .. Should return true  
but 
Uint_8 A       /*blabla*/ ..... should return false

你能帮帮我吗?

【问题讨论】:

  • 我试过这个:1.if [ $string= [^[[0-9]|[a-zA-Z]]*] ] 然后 echo "xxx"fi 2. echo $字符串 | awk '*' '{print NF}' 所以如果字符串包含 * 则 NF 应为 2,如果不是,则 NF 应为 1.. 但这不起作用,因为如果字符串包含一个 * 或 1 *,它总是返回 1。 3. 我也经历过这个例子stackoverflow.com/questions/9767644/…,但我觉得它对我没有帮助。

标签: shell


【解决方案1】:

你需要的正则表达式是[^/]\*[^/]:

例如,如果您的字符串存储在变量中:

$ var='Uint_8 A       /*blabla*/'
$ [[ $var =~ [^/]\*[^/] ]] && echo true || echo false
false

从文件到grep 匹配:

$ grep "[^/]\*[^/]" file
Uint_8* A
Uint_16 * A
ABC * C    /*blablabla*/
ABC* C .. Should return true

【讨论】:

  • 请注意,/* * */ 将返回 true,这可能是不需要的但未在问题中指定。
猜你喜欢
  • 2013-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多