我使用來自不同來源的“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$
只會匹配 is 完全匹配的行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
顯然,如果需要的話,可以很容易地改進它來處理多個空白。