2017-04-11 51 views
0

我發現,這可以指定一個特定長度 的grep -o -w「\ W {6,10}」數據我如何grep所有超過6個字符,沒有元音字母的單詞?

但我想找到所有包含6個或多於6個信,沒有的話任何元音字母。

+0

定期'grep'通常不接受Perl轉義碼'\ w'和擴展正則表達式重複操作符'{6,10}'。使用POSIX'grep',你可以說'grep -o -w'[[:alnum:]] \ {6,10 \}'數據'大致是預期的結果。 – tripleee

+0

如果這是一個威爾士語字典,你正在檢查,只是打印每一行:-) –

回答

2

的grep方法來找到含有6個或更多個字母的所有單詞(字母數字序列)除了元音

數據文件內容:

some text with vowels and CNN_tvs chars swwwdfrgcc done ... 

grep -Eio '\b[b-df-hj-np-tv-z0-9_]{6,}\b' data 

輸出:

CNN_tvs 
swwwdfrgcc 

\b - 指向字邊界

b-df-hj-np-tv-z - 的輔音字母


替代的範圍內perl的的方法:

perl -nle 'print for /\b[b-df-hj-np-tv-z0-9_]{6,}\b/gi' data 
+0

@ l'l l,謝謝,改爲'E'選項 – RomanPerekhrest

+0

@ l'l'l,不,'E'是一個很好的選擇,它將涵蓋GNU和BSD實現 – RomanPerekhrest

+0

確認使用'grep(BSD grep)2.5.1-FreeBSD'和'grep(GNU grep)2.20' + –

-1

你可以在一個單一的正則表達式中結合你所有的需求。 (我)

^[^ aeiouy] {6,10} $

說明:^意味着之初意味着不能有圖案前 什麼。字符串以模式開頭。 (?i)表示不區分大小寫。 [^ aeiouy]是不 含有元音(不就是^){字符串} 6,10是{minlenght,maxlenght)$表示 不能有任何的比賽後

在使用它你grep的。

+1

除非你的版本實現了非標準的'-P'選項,否則你不能在'grep'中使用Perl擴展。 – tripleee

+0

它也匹配6個或更多的非單詞字符。 – LukStorms

相關問題