我使用* grep'(^#| ^ $)'文件以搜索以'#'开头的文字中的行或空行。
但它不起作用。
因为当我读到这本书时,sed& awk',它说 grep 并不完全使用正则表达式语法中的所有元字符。
所以我怀疑。是表达式'(^#| ^ * $)'在正则表达式中只是非法的?或者是因为grep不支持这种语法。
再次怀疑。 ' \' :关闭下一个字符的特殊含义。有时它是相反的。我知道的另一个是'()' ' {}&#39 ;.是' |'也是相反的一个?还存在一些吗? 感谢。
答案 0 :(得分:1)
您需要使用\|
而不是裸|
才能使这个OK表达式与grep一起使用。
从手册页:
在基本正则表达式中,元字符?,+,{,|,(和) 失去他们的特殊意义;而是使用backslashed版本\?, +,{,\ |,(和)。
所以试试这个表达式:
grep '\(^#\|^ *$\)' input
或:
grep '^\(#\| *$\)' input
答案 1 :(得分:0)
答案 2 :(得分:0)
你可以使用egrep,它是grep的增强版本。或者,也可以将-E
选项添加到grep
。此外,为了避免与shell中的特殊字符冲突(例如*,|),你最好用引号括起regexp。