Sed:替换特定部分

Orl*_*rlo 5 linux bash sed

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

例如:

http://sub.somedomain.com/s/be2b46b4cb28ed64fe59d191cb600117/2013/image.jpg
Run Code Online (Sandbox Code Playgroud)

http://sub.somedomain.com/s/123123/2013/image.jpg
Run Code Online (Sandbox Code Playgroud)

我尝试过的:

echo "http://sub.somedomain.com/s/be2b46b4cb28ed64fe59d191cb600117/2013/image.jpg" | sed "s@/s/(.+?)/@123123@g"
Run Code Online (Sandbox Code Playgroud)

ale*_*s_t 5

sed "s@/s/[^/]*/@/s/123123/@g"
Run Code Online (Sandbox Code Playgroud)

你的正则表达式的问题:

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