grep 命令查找以 * 开头和结尾的“单词”(例如,*way*、*then*)

grep 命令查找以 * 开头和结尾的“单词”(例如,*way*、*then*)

我原本的想法是这样做

grep -w '\*.*\*' /path/file-name

这会产生一些不错的结果,但它不尊重单词选项。我得到了整行。例如,像这样

[bold]*way* to the store to buy some groceries and *then*[bold]

我想得到这个

[bold]*way*[bold] to the store to buy some groceries and [bold]*then*[bold]

我得到的另一个是这个,我认为它不会出现,因为它有空格(这应该取消它资格,因为我只想要用空格分隔的单词或东西)

* * *

答案1

你需要进行匹配非贪婪:在基本(BRE)或扩展(ERE)正则表达式中,你可以使用独占字符集[^*]代替包含字符集来强制执行.*

grep '\*[^*]*\*'

或者

grep '[*][^*]*[*]'

如果你更喜欢 perl 兼容的正则表达式,它有一个明确的非贪婪修饰符?

grep -P '\*.*?\*'

相关内容