我使用来自不同来源的“hosts”文件,并使用以下 SED 代码来解锁某些网站:
sed -i '/0.0.0.0 internet.com/s/^/#/g' /tmp/hosts
结果:
它将 # 放在前面
0.0.0.0 internet.com
但是也
0.0.0.0 internet.com.site
我需要修复它。
答案1
如果只想匹配完整行,则指定完整行:
sed -i '/^0.0.0.0 internet.com$/s/^/#/g' /tmp/hosts
这些^
方法是离线启动的,正如您已经在替换的搜索模式中使用的那样。
表示$
行尾。
因此,^0.0.0.0 internet.com$
只会匹配完全匹配的行0.0.0.0 internet.com
,而不是仅包含它作为子字符串的行。
答案2
这是我使用的。它还处理包含别名的条目
$ cat -vet hosts
0.0.0.0 internet.com internet$
0.0.0.0 internet.com^Iinternet$
0.0.0.0 internet.com$
0.0.0.0 internet.com.site$
$ sed 's/^0.0.0.0 internet.com\( \|\t\|$\)/# &/' hosts
# 0.0.0.0 internet.com internet
# 0.0.0.0 internet.com internet
# 0.0.0.0 internet.com
0.0.0.0 internet.com.site
显然,如果需要的话,可以很容易地改进它来处理多个空白。