
以下のファイルから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
\b
GNU sedの単語境界、つまり「単語文字」と単語以外の文字の間の点を一致させます。文字、数字、下線は前者で、点とダッシュ(何よりも)は後者なので、行末と点とダッシュの前にlocalhost
単語境界があります。ただし、t
との間2
またはt
との間には該当しませんr
。
その単語を含む行のみを削除するには、またはeven(後方一致、固定文字列一致、完全行一致)をlocalhost
使用します。sed -e '/^localhost$/d'
grep -vFx 'localhost'
-v
-F
-x
または後ろにスペースがある場合:sed -e '/^localhost[[:blank:]]*$/d'