"sed"コマンドは、特殊文字を除いて正確に一致する文字列を含む行を削除します。

以下のファイルから1行を削除しようとしています。

localhost
localhost23
localhost-2.com
localhost-loopback.com
localhost.utopiad.com
localhostr.com

使用sed '/^localhost\b/d' file

localhostr.comなぜ2行と合計のみが印刷されるのかわかりません。その行だけを削除しlocalhost23たいのですが…localhost

ベストアンサー1

\bGNU sedの単語境界、つまり「単語文字」と単語以外の文字の間の点を一致させます。文字、数字、下線は前者で、点とダッシュ(何よりも)は後者なので、行末と点とダッシュの前にlocalhost単語境界があります。ただし、tとの間2またはtとの間には該当しませんr

その単語を含む行のみを削除するには、またはeven(後方一致、固定文字列一致、完全行一致)をlocalhost使用します。sed -e '/^localhost$/d'grep -vFx 'localhost'-v-F-x

または後ろにスペースがある場合:sed -e '/^localhost[[:blank:]]*$/d'

おすすめ記事