egrep "[^e]" text.txt
其中text.txt
是:
hello
mellow
hello
wack
所以準確地說,應該不是輸出是wack
?
但終端(BASH)返回
hello
mellow
hello
wack
出於某種原因?
egrep "[^e]" text.txt
其中text.txt
是:
hello
mellow
hello
wack
所以準確地說,應該不是輸出是wack
?
但終端(BASH)返回
hello
mellow
hello
wack
出於某種原因?
如果你想有一個負匹配與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
開始它不會匹配任何東西。
egrep
這裏不需要。要查看匹配,你可以使用--color=auto
選項(如果可用)
$ grep --color=auto '[^e]' text.txt
hello
mellow
hello
wack
你會發現,比e
其他所有字符相匹配
使用-v
選項,它會返回所有不匹配給定的線搜索模式
$ grep -v 'e' text.txt
wack
要修改OP的正則表達式,而不使用-v
,需要匹配全線
$ grep '^[^e]*$' text.txt
wack
$ # or with -x if available
$ grep -x '[^e]*' text.txt
wack
確實假設你已經有了一個grep來做着色;並不是所有的Unix版本都有這樣的'grep'。 –
@JonathanLeffler感謝那個珍聞,編輯回答 – Sundeep
那麼剛纔'[^ e]'做了什麼呢?我不明白。如果一個單詞包含e,那好嗎? –
它匹配除字符串中的「e」之外的所有內容。如果除了'e'之外的字符串中還有其他字符是沒有用的。 – iamauser
如果我想用PURE正則表達式過濾掉所有包含'e'的東西?那麼不要使用'-v'標誌? –