【问题标题】:Replace/remove literal square brackets in Bash string替换/删除 Bash 字符串中的文字方括号
【发布时间】:2016-08-11 16:16:39
【问题描述】:

我正在寻找一种解决方案来消除 Bash 字符串中的方括号。 例如,考虑字符串:

ldr r3, [r0,#8]! 

但是我不确定如何消除“[”和“]”。我想以最优雅的方式消除所有符号,例如:

str="ldr r3, [r0,#8]!"
echo ${str//[,.!]/}

但包含方括号。如何实现?

【问题讨论】:

    标签: bash shell brackets


    【解决方案1】:

    另一个干净的解决方案是 tr:

    tr:翻译、压缩和/或删除标准输入中的字符,写入标准输出。

    在哪里

    -d, --delete 删除SET1中的字符,不翻译

    用你的例子:

    str="ldr r3, [r0,#8]!"
    echo $str | tr -d "[]"
    

    输出是:

    ldr r3, r0,#8!
    

    【讨论】:

      【解决方案2】:

      使用

      echo "${str//[][,.!]}"
      

      因为[] 不是一个有用的模式,当] 是列出的第一个 字符时,它会被视为括号表达式的一部分。括号表达式不能嵌套,所以[没有限制。

      你也可以简单地转义]

      echo "${str//[[\],.!]}"
      

      【讨论】:

      • 完美。谢谢你的解释!
      猜你喜欢
      • 2017-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-16
      • 2013-01-04
      • 2012-03-16
      • 2011-11-03
      相关资源
      最近更新 更多