sed式の修正

sed式の修正

私はさまざまなソースからの「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

明らかに、必要に応じて複数の空白を処理するように簡単に改善できます。

関連情報