我有一个网址列表,对于大多数人来说,我想做一个简单的搜索和替换,但在某些情况下我想要使用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'
按预期重新格式化所有网址。
如何修改我必须排除其中包含“沙盒”的行?
提前感谢您的帮助!
答案 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