Grep:为什么要使用转义修饰符?

Grep:为什么要使用转义修饰符?

我所说的修饰符的意思如下:

-\{m\} exactly m repetitions of previous character
- \{m,\} at least m repetitions of previous character
- \{m,n\} any number of repetitions of prev char between m and n inclusive
- \< beginning of word
- \> end of word

逃避他们的原因是什么?

例如,如果 file1 中有单词“cat”:

$ egrep -n '\<cat\>' file1
17:cat

上面的命令找到了单词“cat”,但是下面的命令呢,它什么也没返回,但它实际上在做什么?

$ egrep -n '<cat>' file1

答案1

因为最早的版本grep不能将 {…}?+(…)<、 和识别>为元字符 - 它们只是匹配自身。唯一的元字符是[…]^$.*\。保留此行为是为了向后兼容(以便旧脚本仍然可以按原样工作,而无需重写)。因此,您必须使用 来\激活这些最近发明的元字符的特殊属性,就像nand tnot 意味着换行符和制表符(它们意味着nand t);您需要使用\n\t来获取换行符和制表符。

相关内容