我原本的想法是这样做
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 '\*.*?\*'