特定のホストの約15行のエントリを含むホストファイルがあります。
# Entry added by Automation
これらのすべてのホストエントリには、エントリ内にテキストがあります。
たとえば、
10.122.123.124 file1.auto.test-json.abx.com # Entry added by Automation
10.122.123.125 file2.auto.test-json.abx.com # Entry added by Automation
10.122.123.126 file3.auto.test-json.abx.com # Entry added by Automation
10.122.123.127 file4.auto.test-json.abx.com # Entry added by Automation
その行の先頭に「#」を追加するか、# Entry added by Automation
行を完全に削除したいと思います。
希望の出力:
# 10.122.123.124 file1.auto.test-json.abx.com # Entry added by Automation
# 10.122.123.125 file2.auto.test-json.abx.com # Entry added by Automation
# 10.122.123.126 file3.auto.test-json.abx.com # Entry added by Automation
# 10.122.123.127 file4.auto.test-json.abx.com # Entry added by Automation
答え1
sedでできます。
「自動化追加項目」を含む行を確認し、行の先頭を#に置き換えます。
sed '/Entry added by Automation/ s/^/# /' -i /etc/hosts
答え2
その内容を含むすべての行をフィルタリングするには、-'v'オプションと一緒に'grep'を使用できます。たとえば、
grep -v "# Entry added by Automation" /etc/hosts > /etc/hosts.new
mv /etc/hosts.new /etc/hosts