Archivo de hosts Sed to Modfiy

Tengo un file de text, modifyhostslist.txt , que contiene inputs que corresponden a las inputs encontradas en mi file de hosts . No todas las inputs en mi file hosts deben modificarse, solo las inputs también se encuentran en modifyhostslist.txt .

Las inputs encontradas en modifyhostslist.txt se comentarán en el file hosts .

Línea de muestra (input) encontrada en modifyhostslist.txt : 127.0.0.1 www.domain.com

Lo siguiente sirve como la secuencia de comentario: #%%#

sed usar sed para completar la tarea, pero hasta ahora no he tenido éxito. Aquí está mi ataque más reciente:

 while read line; do sed -i 's/'"$line"'/#%%#'"$line"'/' /system/etc/hosts; done < modifyhostslist.txt 

Además, los comentarios del #%%# se eliminarán en intervalos específicos, devolviendo así el file de hosts a su estado original. Sospecho que simplemente reorganizar el command que se utiliza para insert los comentarios también se puede utilizar para eliminar los comentarios en el file de hosts ?

Parece que el command awk podría funcionar, pero no estoy seguro de cómo usarlo también.

Usaste el command:

 while read line; do sed -i 's/'"$line"'/#%%#'"$line"'/' /system/etc/hosts; done < modifyhostslist.txt 

Siempre que las líneas en modifyhostslist.txt coincidan con las líneas en /system/etc/hosts , ese command realmente debería funcionar.

Si las líneas se ven idénticas a las del ojo, pero el command todavía no funciona, la causa puede ser una falta de coincidencia entre las terminaciones de línea (invisibles). Los files DOS / Windows tienen terminaciones de línea de dos caracteres, mientras que Unix y Mac usan terminaciones de línea de un solo carácter. Si este es el problema, la solución es eliminar los caracteres ofensivos. Como hosts es un file de sistema Unix, espero que tenga los finales de línea correctos y, por lo tanto, necesitamos eliminar los caracteres modifyhostslist.txt file modifyhostslist.txt . Esto puede hacerse de la siguiente manera:

 while read line; do sed -i 's/'"$(echo "$line" | tr -d '\r')"'/#%%#'"$line"'/' /system/etc/hosts; done < modifyhostslist.txt