Você usou o comando:
while read line; do
sed -i 's/'"$line"'/#%%#'"$line"'/' /system/etc/hosts;
done < modifyhostslist.txt
Contanto que as linhas em modifyhostslist.txt
correspondam às linhas em /system/etc/hosts
, esse comando realmente deve funcionar.
Se as linhas parecerem idênticas ao olho, mas o comando ainda não funcionar, a causa pode ser uma incompatibilidade entre os fins de linha (invisíveis). Os arquivos DOS / Windows têm finais de linha de dois caracteres, enquanto o Unix e o Mac usam fins de linha de um caractere. Se este for o problema, a solução é remover os caracteres ofensivos. Como hosts
é um arquivo de sistema Unix, espero que ele tenha as terminações de linha corretas e, portanto, precisamos remover os caracteres \r
excedentes do arquivo modifyhostslist.txt
. Isso pode ser feito da seguinte maneira:
while read line; do
sed -i 's/'"$(echo "$line" | tr -d '\r')"'/#%%#'"$line"'/' /system/etc/hosts;
done < modifyhostslist.txt