替换/删除 Bash 字符串中的方括号

Ani*_*ino 4 bash shell brackets

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

ldr r3, [r0,#8]! 
Run Code Online (Sandbox Code Playgroud)

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

str="ldr r3, [r0,#8]!"
echo ${str//[,.!]/}
Run Code Online (Sandbox Code Playgroud)

但包含方括号。如何才能做到这一点?

Jos*_*ose 7

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

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

在哪里

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

以你的例子:

str="ldr r3, [r0,#8]!"
echo $str | tr -d "[]"
Run Code Online (Sandbox Code Playgroud)

输出是:

ldr r3, r0,#8!
Run Code Online (Sandbox Code Playgroud)


che*_*ner 6

使用

echo "${str//[][,.!]}"
Run Code Online (Sandbox Code Playgroud)

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

您也可以简单地逃避]

echo "${str//[[\],.!]}"
Run Code Online (Sandbox Code Playgroud)