正则表达式在sed中替换给定特定格式的URL的部分

gag*_*ina 1 regex linux bash sed

我在使用sed做一个简单的正则表达式时遇到了一些问题.

我要在sql文件中做一些替换,我正在尝试使用sed.

我应该替换一些链接的url.链接采用以下格式:

万维网.site1 .com/blog/2012/12/12

我想在所有链接中将site1替换为site2.

为了找到这些链接,我写了以下正则表达式:

(site1.com)\/blog\/\d{4}\/\d{2}\/\d{2}
Run Code Online (Sandbox Code Playgroud)

而且好像很适合.

使用sed做替换的事情我写了下面的代码

cat back.sql | sed 's:(site1.com)\/blog\/\d{4}\/\d{2}\/\d{2}:site2.com:' > fixed.sql
Run Code Online (Sandbox Code Playgroud)

但它似乎不起作用..

kni*_*ttl 5

sed不支持\d(至少我不知道),并且{4}仅支持扩展正则表达式.

sed -r 's:site1.com(/blog/[0-9]{4}/[0-9]{2}/[0-9]{2}):site2.com/\1:'
Run Code Online (Sandbox Code Playgroud)

作为一个基本的正则表达式(需要大量的转义):

sed 's:site1.com\(/blog/[0-9]\{4\}/[0-9]\{2\}/[0-9]\{2\}\):site2.com/\1:'
Run Code Online (Sandbox Code Playgroud)

PS.如果使用不同的delemiters(:),则不需要转义斜杠