如何在域列表中查找文字匹配

如何在域列表中查找文字匹配

我有一个充满主机的 hosts 文件,如下所示:

127.0.0.1 home-domain.net
127.0.0.1 here.home-domain.net
127.0.0.1 home-domain.netn
127.0.0.1 home.domain.net
127.0.0.1 home.domain.net.some

在 ash shell 脚本(BusyBox)中,我只想要文字匹配,我有

match=home.domain.net
grep " $match$" file

这不仅正确匹配了“home.domain.net”,还匹配了“home-domain.net”。我在“$match$”中使用的空格是为了将其限制在主机名的开头,而 $ 是行尾。我怎样才能仅匹配“home.domain.net”的文字?

答案1

我怎样才能只匹配“home.domain.net”的文字?

您需要.使用 来转义字符\。那么唯一的特殊正则表达式字符就是第二个$

match=home\.domain\.net
grep " $match$" file    

例子:

$ cat file
127.0.0.1 home-domain.net
127.0.0.1 here.home-domain.net
127.0.0.1 home-domain.netn
127.0.0.1 home.domain.net
127.0.0.1 home.domain.net.some
$ match=home\.domain\.net
$ grep " $match$" file
127.0.0.1 home-domain.net
127.0.0.1 home.domain.net

笔记:

  • 127.0.0.1 home-domain.net在您的示例主机文件中重复出现。

来源grep- 在文件中搜索特定文本。


进一步阅读

相关内容