Regex 白鹭否定倒置

Regex 白鹭否定倒置,regex,grep,Regex,Grep,我使用egrep进行一些测试/学习,我对课堂上的否定(^)感到惊讶 我在mytest.txt中使用以下文本: Iraq Qantas Iraqi Iraqian miqra qasida qintar qoph zaqqum% 使用:egrep'q[^u]'test.txt结果是: zaqqum%。如果我理解,我的结果应该列出存在q的所有匹配项和不,然后是u。 但正如你所看到的,我得到了相反的结果。为什么?(我知道我可以使用egrep-v)。 谢谢您的grep正在按预期工作。它打印zaqqu

我使用egrep进行一些测试/学习,我对课堂上的否定(^)感到惊讶

我在mytest.txt中使用以下文本:

Iraq
Qantas 
Iraqi
Iraqian
miqra
qasida
qintar
qoph
zaqqum%
使用:egrep'q[^u]'test.txt结果是: zaqqum%。如果我理解,我的结果应该列出存在q的所有匹配项,然后是u。 但正如你所看到的,我得到了相反的结果。为什么?(我知道我可以使用egrep-v)。
谢谢

您的grep正在按预期工作。它打印
zaqqum%
,因为
qq

$ egrep  'q[^u]' a
Iraqi
Iraqian
miqra
qasida
qintar
qoph
zaqqum%
如果只显示匹配项,则更清楚:

$ egrep -o 'q[^u]' a
qi
qi
qr
qa
qi
qo
qq
如果添加
zaqum%
,则不会显示:

$ echo "zaqum%" | egrep  'q[^u]'
$

如果我有:egrep-o'q[^u],我只有一个:qu,而不是qi-qi-qa-qi-qo-qqc你能检查一下你是否在
egrep
上设置了别名吗?执行
别名egrep
查看。@Olegalex您的文件中可能有控制字符隐藏终端上的输出。将
| cat-v
添加到命令末尾,看看您得到了什么。@fedorqui,我将cygwin与egrep一起使用。没有别名命令there@Olegalex然后,尝试使用
grep-e
,这与
egrep
相同,并且在您的情况下可能具有预期的行为。