2
我使用termux在Android上運行bash shell爲什麼grep -n「[^ aeiou] +」返回不存在元音的行時不含元音?
目標是打印不包含任何元音的字符或詞。 CMDS的
序列類型:
$ cat f4
a
b
c
bb
$ grep -n "[^aeiou]+" f4
$
無法理解爲什麼正則表達式沒有給出預期輸出。
我使用termux在Android上運行bash shell爲什麼grep -n「[^ aeiou] +」返回不存在元音的行時不含元音?
目標是打印不包含任何元音的字符或詞。 CMDS的
序列類型:
$ cat f4
a
b
c
bb
$ grep -n "[^aeiou]+" f4
$
無法理解爲什麼正則表達式沒有給出預期輸出。
第一張:+
是ERE的延伸。要建立一個相當於BRE命令可能是這樣的:
grep '[^aeiou]\{1,\}$'
...或者你可以添加-E
參數或使用egrep
來實現這種擴展。
第二:如果你的目標是找到單詞,沒有元音,而不是簡單地包含至少一個非元音字符的話,你需要錨你的正則表達式:
grep '^[^aeiou]\{1,\}$'
或者,作爲一個ERE,
grep -E '^[^aeiou]+$'
在前面的^
和背面的$
是錨:釷確保你所匹配的內容從行的開頭一直到行尾,而不是存在於的某處。
或者,更簡單地說,使用'-v'來匹配補碼:'grep -v'[aeiou]''。 –
撇開:'cmd'是Windows外殼。它不適用於此。 –
此外,您的問題標題應該足夠具體,以便有人可以用它來識別您的特定問題。不僅僅是「我在X上遇到問題」,而是「我在X上遇到了這個問題」。這個網站的目的是建立一個對人們有用的問題和答案的數據庫,而有用的部分是有一個標題,讓別人從搜索結果的摘要中確定他們是否有同樣的問題。 –
(另外,在Linux上命令是區分大小寫的,所以你不能在這裏運行'Cat'而不是'cat'並讓它工作;我已經冒相應的編輯)。 –