2013/11/2 YunQiang Su <wzss...@gmail.com> > 现在有个字符串比如 > > a[amd64, i386], b[linux-any, kfreebsd-any], c[amd64 mipsel, mips64el], d > [any] > > 现在需要将其改为 > a[amd64 i386], b, c, d > > 规则是 > 如果方括号里有 any, linux-any, mips64el 中的一个, > 就把这个方括号及其内容,以及方括号前边的一个空格去掉 > 如果方括号内没有 any, linux-any, mips64el, 就保留着 > > 要求:尽量使用 sed/perl/awk 等一行搞定。 > > -- > YunQiang Su >
大概是这样吧: s/\x20?\[ [^\[\]]*? (any|linux-any|mips64el) [^\[\]]*? \]//xg; (perl的正则表达式) 如果还可能出现freebsd-any之类的的话,这个就有问题,得改成更复杂的: s/\x20?\[ ( [^\[\]]*?,\s* | ) (any|linux-any|mips64el) (,\s* [^\[\]]*? | ) \]//xg; GUO Yixuan