我有一个充满主机的 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- 在文件中搜索特定文本。
进一步阅读
- Linux 的 Bash 命令行的 AZ 索引- 与 Bash 命令行相关的所有事物的绝佳参考。
- grep- 在文件中搜索特定文本。