我做
egrep "[^e]" text.txt
text.txt
的位置:
hello
mellow
hello
wack
准确地说,输出不应该是wack
?
但终端(BASH)返回
hello
mellow
hello
wack
出于某种原因?
答案 0 :(得分:3)
如果您希望与egrep
进行否定匹配,则需要-v
选项。
~]# egrep -v '[e]' text.txt
wack
~]# egrep '[e]' text.txt
hello
mellow
hello
在命令^
内[e]
匹配输入文件中除e
之外的所有内容。例如,如果您的输入文件包含字符串eeee
,那么它将返回除eeee
之外的所有内容
~]# egrep '[^e]' text.txt
hello
mellow
hello
wack
如果您将^
放在[e]
之外,则不会匹配任何内容,因为text.txt
中的所有字符串都不以e
开头。
答案 1 :(得分:2)
egrep
。要查看匹配的内容,您可以使用--color=auto
选项(如果有)
$ grep --color=auto '[^e]' text.txt
hello
mellow
hello
wack
您会注意到e
以外的所有字符都匹配
使用-v
选项,它将返回与给定搜索模式不匹配的所有行
$ grep -v 'e' text.txt
wack
要在不使用-v
的情况下修改OP的正则表达式,需要匹配整行
$ grep '^[^e]*$' text.txt
wack
$ # or with -x if available
$ grep -x '[^e]*' text.txt
wack