我正在尝试从下面的文件中删除一行
localhost
localhost23
localhost-2.com
localhost-loopback.com
localhost.utopiad.com
localhostr.com
使用sed '/^localhost\b/d' file
我不明白为什么只打印两行localhostr.com
和。localhost23
我只想localhost
删除该行...
答案1
\b
匹配 GNU sed 中的单词边界,即“单词字符”和非单词字符之间的点。字母、数字和下划线是前者,点和破折号(以及其他)是后者,因此在行尾localhost
以及点和破折号之前都有一个单词边界。但不在t
and之间2
,或者t
and 之间r
。
如果您只想删除包含该单词的行localhost
,只需使用sed -e '/^localhost$/d'
, 甚至grep -vFx 'localhost'
(-v
对于反向匹配、-F
对于固定字符串匹配、-x
对于全行匹配)。
或者,如果您可能有尾随空格:sed -e '/^localhost[[:blank:]]*$/d'