可以[a | b]表达式用于grep BRE模式?

时间:2014-04-05 06:32:50

标签: regex linux unix grep

根据this,在BRE(基本正则表达式)模式下的普通grep中不支持管道替代方案 我有一个简单的文本文件:

cat file1.txt 
|||
This is new line
That is a new line2 

但是我使用以下命令确实返回了一些东西(不知道为什么)

grep "Th[is|at]" files/file1.txt

返回

This is new line
That is a new line2

其中ThiTha由zsh突出显示,所以我认为它们是grep匹配的部分,有人可以解释一下吗?

1 个答案:

答案 0 :(得分:2)

你正在做的事情有几个问题:

  • 您似乎对交替和角色类感到困惑。说[bar]会匹配bar。为了匹配isat,您可以说(is|at)

  • 使用BRE时,()|,......并不特别,您需要逃避它们。

改为使用:

grep "Th\(is\|at\)" filename

ERE中的相同模式将写为:

grep -E "Th(is|at)" filename

您可能还想引用regular expressions