bash – 使用sed删除字符串周围的开始和结束方括号

我在Ubuntu 12.04.1 LTS上的bash shell中运行此命令.我试图一举删除[和]字符,即无需第二次管道.

我知道方括号在正则表达式中有特殊含义所以我通过在反斜杠前加上它来逃避它们.我期待的结果只是字符串123但方括号仍然存在,我很想知道原因!

~$echo '[123]' | sed 's/[\[\]]//'
[123]
如果您仔细遵循 manual,这很容易:字符类中的所有成员都失去特殊含义(除了少数例外).并且如果将其放在列表中的第一位,则失去其特殊含义.尝试:
$echo '[123]' | sed 's/[][]//g'
123
$

这说:

>在外部[方括号]内,替换任何包含的字符,即:

>]和
> [[

>用空字符串替换它们中的任何一个 – 因此空替换字符串//,
>到处(全局)替换它们 – 因此最终g.

同样,每当包含它时,必须是班级中的第一个.

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...