Sed:替换特定部分

5
我需要替换链接的特定部分。
例如:
http://sub.somedomain.com/s/be2b46b4cb28ed64fe59d191cb600117/2013/image.jpg

http://sub.somedomain.com/s/123123/2013/image.jpg

我尝试过的内容:
echo "http://sub.somedomain.com/s/be2b46b4cb28ed64fe59d191cb600117/2013/image.jpg" | sed "s@/s/(.+?)/@123123@g"

sed 要求你转义 () 以将它们用于分组。但是如果在替换中没有反向引用,为什么需要分组呢? - Barmar
看这个: <?php $d = date('Y/M/D');$a = explode('/',$d);$b =''; foreach($a as $d) { $b .= "/$d"; echo "$b<br />"; } - Elliptical view
1个回答

5
sed "s@/s/[^/]*/@/s/123123/@g"

您的正则表达式存在问题:

  • 括号()是基本正则表达式(BRE)中的普通字符(在此处实际上并不需要)
  • +在BRE中也不是特殊字符
  • 如果您使用sed -E启用了扩展正则表达式,则会匹配太多内容,因为它不会在下一个斜杠停止。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接