grep 限制

grep 限制

我有一个 YAML 文件:

- name: scheduler-configuration
- name: scheduler

我正在抓一些类似的东西

grep "scheduler" file.txt 

输出显示两行,但我只想要单行,例如:

-name: scheduler

有什么方法可以将其grep(或任何类似的工具)限制为确切的模式吗?

答案1

正如所解释的这里, grep 认为单词由字母数字字符和下划线组成。因此-grep scheduler即使您使用grep -w.

您可以编写自己的模式,以匹配“scheduler”之前和之后,其中不仅包括字母数字和“_”的相反字符,还包括其他字符。

grep -E '([^[:alnum:]_-]|^)scheduler([^[:alnum:]_-]|$)' file.txt

这将匹配未被其他字母数字字符或“_”或“-”包围的“scheduler”

答案2

看起来你可能只想scheduler被空白包围或什么都没有:

$ grep -E '(^|[[:space:]])scheduler([[:space:]]|$)' file
- name: scheduler

相关内容