如何对1到50个字符的字母数字字符串进行grep编码(理想情况下,任何长度都可以),每边都带有一个冒号-典型的结果是所有包含该字符串的行:shopping:
。到目前为止,下面的代码(我已经尝试了一些变体)无法正常工作:
grep ':[[:alnum:]]{1,100}:' ~/x.txt
如何对1到50个字符的字母数字字符串进行grep编码(理想情况下,任何长度都可以),每边都带有一个冒号-典型的结果是所有包含该字符串的行:shopping:
。到目前为止,下面的代码(我已经尝试了一些变体)无法正常工作:
grep ':[[:alnum:]]{1,100}:' ~/x.txt
Answers:
使用基本的正则表达式,您可以将其编写为:
grep ':[[:alnum:]]\{1,100\}:' ~/x.txt
需要注意的是\{
(相对于\+
或\?
例如)是标准的和便携的,并且实际上的BRE当量+
和?
通常与写\{
:\{1,\}
和\{0,1\}
。grep -E
尽管它也是标准且可移植的,所以您最好使用它,因为在这种情况下,它使可读性更强的正则表达式。
由于没有人提到它,因此您也可以使用egrep
,据我所知,它等效于grep -E
。
egrep ':[[:alnum:]]{1,100}:' ~/x.txt
egrep
是使用ERE进行grep的历史命令。自很久以前,grep和egrep的功能已通过-E选项合并到grep中。egrep
现在被认为已过时/已弃用(但不太可能消失,因为有些人仍然习惯了)。
grep
通过包含-E
开关来启用扩展的正则表达式功能即可。