替换/删除Bash字符串

时间:2016-08-11 16:16:40

标签: bash shell brackets

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

ldr r3, [r0,#8]! 

但是我不知道如何消除'['和']'。我想以最优雅的方式消除所有符号,例如:

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

但包括方括号。如何实现这一目标?

2 个答案:

答案 0 :(得分:2)

使用

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

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

您也可以简单地转义]

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

答案 1 :(得分:2)

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

<块引用>

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

哪里

<块引用>

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

以你的例子:

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

输出为:

ldr r3, r0,#8!