ModfiyホストファイルとしてSed

ModfiyホストファイルとしてSed

マイファイルmodifyhostslist.txt内のアイテムに対応するアイテムを含むテキストファイルがあります。hostsファイル内のすべての項目をhosts変更する必要はありませんmodifyhostslist.txt

で見つかったエントリはmodifyhostslist.txtファイル内でコメントアウトされますhosts

例示的な行(項目)は次の場所にありますmodifyhostslist.txt127.0.0.1 www.domain.com

コメントアウトされた順序は次のとおりです。#%%#

私は仕事を終えるためにそれを使用しようとしましたが、sedこれまで成功していませんでした。私の最近の試みは次のとおりです。

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

また、#%%#特定の間隔でコメントが削除され、hostsファイルが元の状態に復元されます。コメントを挿入するために使用されるコマンドを単に並べ替えるだけで、hostsファイルのコメントを削除するためにも使用できると考えられます。

このコマンドはうまくいくようですが、どのようにawk使用するのかわかりません。

答え1

次のコマンドを使用しました。

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

modifyhostslist.txtの行がの行と一致する限り、コマンドは/system/etc/hosts機能します。

行が同じように見えますが、コマンドがまだ機能していない場合は、(見えない)行の終わりが一致しないためです。 DOS / Windowsファイルには2文字の行末があり、UnixとMacは1文字の行末を使用します。これが問題であれば、問題となる文字を削除することが解決策です。 Unixシステムファイルなので、hosts正しい行末があることを望むので、ファイル\rからmodifyhostslist.txt 追加の文字を削除する必要があります。これは次のように実行できます。

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

関連情報