Sed:替换特定部分

时间:2013-12-25 21:19:25

标签: linux bash sed

我需要替换链接的特定部分

例如:

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"

1 个答案:

答案 0 :(得分:5)

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

正则表达式出现问题:

  • 方括号()是基本正则表达式(BRE)中的常规字符(此处并不需要它们)
  • +在BRE中也不是特别的
  • 如果您使用sed -E启用了扩展正则表达式,那么您将匹配太多,因为您没有停留在下一个斜杠