Estoy usando archivos "hosts" de diferentes fuentes y para desbloquear algunos sitios uso el siguiente código SED:
sed -i '/0.0.0.0 internet.com/s/^/#/g' /tmp/hosts
Resultado:
Pone # delante de
0.0.0.0 internet.com
pero también
0.0.0.0 internet.com.site
Tengo que arreglarlo.
Respuesta1
Si solo desea hacer coincidir líneas completas, especifique líneas completas:
sed -i '/^0.0.0.0 internet.com$/s/^/#/g' /tmp/hosts
Los ^
medios comienzan sin conexión, como ya usa en el patrón de búsqueda para el reemplazo.
El $
medio final de la línea.
Por lo tanto, ^0.0.0.0 internet.com$
solo coincidirá con una línea que sea exactamente 0.0.0.0 internet.com
, no con una línea que solo la contenga como una subcadena.
Respuesta2
Esto es lo que uso. También maneja entradas que contienen alias.
$ 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, podría mejorarse fácilmente para manejar múltiples espacios en blanco si fuera necesario.