根据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
其中Thi
和Tha
由zsh突出显示,所以我认为它们是grep匹配的部分,有人可以解释一下吗?
答案 0 :(得分:2)
你正在做的事情有几个问题:
您似乎对交替和角色类感到困惑。说[bar]
会匹配b
或a
或r
。为了匹配is
或at
,您可以说(is|at)
。
使用BRE时,(
,)
,|
,......并不特别,您需要逃避它们。
改为使用:
grep "Th\(is\|at\)" filename
ERE中的相同模式将写为:
grep -E "Th(is|at)" filename
您可能还想引用regular expressions。