修復 sed 表達式

修復 sed 表達式

我使用來自不同來源的“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

顯然,如果需要的話,可以很容易地改進它來處理多個空白。

相關內容