2

我有一个 url 列表,对于大多数人来说,我想做一个简单的搜索和替换,但在某些情况下,我想使用 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

我想将 URL 中没有“沙箱”的所有 URL 转换为:

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

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

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

它将按预期重新格式化所有 URL。

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

在此先感谢您的帮助!

4

2 回答 2

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'
于 2012-10-09T16:39:00.123 回答
1
sed -r 's|http://(\S*)|href="/fetch\?domain=\1"|g' | grep -v sandbox
于 2012-10-09T16:39:10.650 回答