我正在使用egrep进行一些测试/学习目的,我对类中的否定("^")感到惊讶。
我在测试中使用以下文本.txt:
Iraq
Qantas
Iraqi
Iraqian
miqra
qasida
qintar
qoph
zaqqum%
使用:egrep 'q[^u]' test.txt结果是:扎克库姆% .如果我理解,我的结果应该列出所有存在 q而不是后跟u 的匹配项。但正如你所看到的,我得到了相反的结果。为什么?(我知道我可以使用egrep -v)。谢谢
您的 grep 正在按预期工作。由于qq
,它打印zaqqum%
:
$ 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]'
$