除了在某些情况下,使用sed搜索和替换URL

时间:2012-10-09 16:35:58

标签: regex sed

我有一个网址列表,对于大多数人来说,我想做一个简单的搜索和替换,但在某些情况下我想要使用sed排除。

鉴于以下列表:

http://www.dol.gov 
http://www.science.gov 
http://www.whitehouse.gov 
http://test.sandbox.local 
http://www.travel.state.gov 
http://www.lib.berkeley.edu
http://dev.sandbox.local

我想将网址中没有“沙盒”的所有网址转换为:

href="/fetch?domain=<url>"

到目前为止,我对sed的了解如下:

sed -r 's|http://(\S*)|href="/fetch\?domain=\1"|g'

按预期重新格式化所有网址。

如何修改我必须排除其中包含“沙盒”的行?

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

如果通过排除,您的意思是“不做替换”,那么:

sed -r '/sandbox/!s|http://(\S*)|href="/fetch\?domain=\1"|g'

如果您的意思是“完全省略输出”:

sed -r -e '/sandbox/d' -e 's|http://(\S*)|href="/fetch\?domain=\1"|g'

答案 1 :(得分:1)

sed -r 's|http://(\S*)|href="/fetch\?domain=\1"|g' | grep -v sandbox