Estou usando arquivos "hosts" de diferentes fontes e para desbloquear alguns sites utilizo o seguinte código SED:
sed -i '/0.0.0.0 internet.com/s/^/#/g' /tmp/hosts
Resultado:
Coloca # na frente de
0.0.0.0 internet.com
mas também
0.0.0.0 internet.com.site
Eu preciso consertar isso.
Responder1
Se você quiser apenas corresponder linhas completas, especifique linhas completas:
sed -i '/^0.0.0.0 internet.com$/s/^/#/g' /tmp/hosts
O ^
meio começa off-line, como você já usa no padrão de busca pela substituição.
O $
meio fim da linha.
Portanto, ^0.0.0.0 internet.com$
corresponderá apenas a uma linha que é exatamente 0.0.0.0 internet.com
, não a uma linha que a contenha apenas como uma substring.
Responder2
Aqui está o que eu uso. Ele também lida com entradas que contêm aliases
$ 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
Obviamente, poderia ser facilmente melhorado para lidar com vários espaços em branco, se necessário.