当我使用此命令时
echo jones:Adrian W. Jones/OSD211/555-0123 | sed -e 's=^([^:]*):[^/]*/([^/]*)/.*$=\1:\2='
我得到了: sed:命令乱码:s = ^([^:] ):[^ /] /([^ /] )/。 $ = \ 1:\ 2 =
但是当我使用这个时:
echo jones:Adrian W. Jones/OSD211/555-0123 | sed -e 's=^\([^:]*\):[^/]*/\([^/]*\)/.*$=\1:\2='
我得到了: jones:OSD211
我为什么要逃脱sed中的(
?
答案 0 :(得分:1)
默认情况下,sed使用BRE。在BRE中,(
是文字(
,你必须逃避它以使其具有特殊意义(分组)
P.S。 Gnu sed具有-r
选项以启用ERE。