私はさまざまなソースからの「hosts」ファイルを使用しており、一部のサイトのブロックを解除するために次の SED コードを使用しています。
sed -i '/0.0.0.0 internet.com/s/^/#/g' /tmp/hosts
結果:
#を先頭に付ける
0.0.0.0 internet.com
だけでなく、
0.0.0.0 internet.com.site
修正する必要があります。
答え1
完全な行のみを一致させたい場合は、完全な行を指定します。
sed -i '/^0.0.0.0 internet.com$/s/^/#/g' /tmp/hosts
これは^
、置換の検索パターンで既に使用しているように、オフラインの開始を意味します。
$
行の終わりを意味します。
したがって、^0.0.0.0 internet.com$
は と完全に一致する行のみに一致し0.0.0.0 internet.com
、 を部分文字列としてのみ含む行には一致しません。
答え2
私が使っているのはこちらです。エイリアスを含むエントリも処理します
$ 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
明らかに、必要に応じて複数の空白を処理するように簡単に改善できます。