这个
sed
您需要的命令应该与
-E
选项,因为您的正则表达式是POSIX兼容的。也就是说,捕获括号应该是非转义的,而文字括号必须转义(如在PCRE中)。
你可以用
sed -E 's;(!\[.*])(\(/uploads/);\1(uploads/;g'
细节
-
(!\[.*])
-捕获组1:
-
!
!
字符(如果您使用
"..."
,你需要逃离它)
-
\[.*]
-a
[
,然后是任何0+个字符,然后
]
-
(\(/uploads/)
-第2组:
-
\(
-a
(
烧焦
-
/uploads/
-安
/上传/
子字符串。
sed 's;\(!\|^\)\(\[.*](\)/\(uploads/\);\1\2\3;g'
\(...\)
(
匹配文字
(
,和
\|
定义替换运算符。
细节
-
\(!\|^\)
!
或字符串开头
-
\(\[.*](\)
[
,然后0+个字符,然后
(
-
/
-a
/
烧焦
-
\(uploads/\)
-第3组:
uploads/
子串
看到了吗
online sed demo
这个
;
regex分隔符有助于消除转义
\
/
使图案更具可读性。