“sed”命令删除具有完全匹配字符串的行,不包含特殊字符

“sed”命令删除具有完全匹配字符串的行,不包含特殊字符

我正在尝试从下面的文件中删除一行

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以及点和破折号之前都有一个单词边界。但不在tand之间2,或者tand 之间r

如果您只想删除包含该单词的行localhost,只需使用sed -e '/^localhost$/d', 甚至grep -vFx 'localhost'-v对于反向匹配、-F对于固定字符串匹配、-x对于全行匹配)。

或者,如果您可能有尾随空格:sed -e '/^localhost[[:blank:]]*$/d'

相关内容