2013-12-16 65 views
1

我試圖使用grep來匹配列表中的特定單詞。 假設列表包含聯盟和與grep的區別

aa 
der 
bb 
abc ref 

如果我的理解是正確的,(我想這使用grep -E)

cat file | grep '[a-z&&[^m-r]]' 

應該返回

aa and bb 

(所有字母匹配從到z,除了m到r)。但我什麼都沒有。在這裏失蹤了嗎?

+0

請描述你想匹配的模式。 – Marc

+0

除m到r以外的a-z之間的任何字母/單詞。 –

+0

正則表達式中沒有交點運算符。如果存在,它可能是單個(不是雙精度)'&',但操作符無論如何都不能在字符類中使用。 – tripleee

回答

1

您可以使用負向預覽。他說:

grep -P '^[a-z](?!.*[m-z])' filename 

將返回

aa 
bb 

您的輸入。

+0

爲什麼這麼複雜?我對這個要求的解釋會提示'^ [a-ls-z] * $'。 – tripleee

1

你可以使用-v開關只是反轉的grep匹配:

cat myfile.txt | grep -v '[m-r]' 

或者不包括管道:

grep -v '[m-r]' myfile.txt