我在Ubuntu 12.04.1 LTS上的bash
shell中运行此命令.我试图一举删除[和]字符,即无需第二次管道.
我知道方括号在正则表达式中有特殊含义所以我通过在反斜杠前加上它来逃避它们.我期待的结果只是字符串123但方括号仍然存在,我很想知道原因!
~$echo '[123]' | sed 's/[\[\]]//' [123]
如果您仔细遵循
manual,这很容易:字符类中的所有成员都失去特殊含义(除了少数例外).并且如果将其放在列表中的第一位,则失去其特殊含义.尝试:
原文链接:https://www.f2er.com/bash/385813.html$echo '[123]' | sed 's/[][]//g' 123 $
这说:
>在外部[方括号]内,替换任何包含的字符,即:
>]和
> [[
>用空字符串替换它们中的任何一个 – 因此空替换字符串//,
>到处(全局)替换它们 – 因此最终g.
同样,每当包含它时,必须是班级中的第一个.