'^\{[a-z]*:[0-9]*\}$|;^[a-z]=[0-9]$'
怎么了?文档(手册页)说|是交替运营商。
答案 0 :(得分:6)
从手册页:
<强>轮换强>
中缀运算符|可以连接两个正则表达式;生成的正则表达式匹配任何匹配替换表达式的字符串。
你误解了这一点,并不是说|;
是交替运算符,而是说|
是交替运算符,分号分隔句子的两个部分。 / p>
此外,除非您使用扩展的正则表达式选项(-E
),否则您将需要转义|
:
基本与扩展正则表达式
在基本的正则表达式中,元字符?,+,{,|,(和)失去了它们的特殊含义;而是使用反斜杠版本\?,\ +,\ {,\ |,\(和\)。
最终结果可能如下所示:
grep -E '^\{[a-z]*:[0-9]*\}$|^[a-z]=[0-9]$' some_file
或没有-E
选项:
grep '^{[a-z]*:[0-9]*}$\|^[a-z]=[0-9]$' some_file