2014-04-22 57 views
1

我想用至少一個不是數字的字符打印出所有行。爲什麼grep顯示的行不匹配?

我grep的代碼如下所示:grep '[^[:digit:]]' GTEST

哪裏GTEST是這樣的:

TEST 
55 55 Pink 
123 
sss 
aaa 
ss aaa ss 
a 1 b 2 a b a 
Doop Dap 
12 13 
77a 
59360 

和輸出正是在GTEST,除了與線(的匹配部分AKA所有的字母字符)以紅色顯示。 I/only /想要打印出包含匹配字符的行,而不是以紅色顯示匹配字符。

我一直在看grep標籤(-o,-w等),但他們都沒有爲我做。

我錯過了什麼嗎?

編輯:

預計產出將是:

TEST 
55 55 Pink 
sss 
aaa 
ss aaa ss 
a 1 b 2 a b a 
Doop Dap 
77a 
+6

輸入中的每一行都至少有一個不是數字的字符。不要忘記空格字符''也是非數字的。 – merlin2011

+0

請提供預期輸出以闡明您正在努力實現的目標。 – merlin2011

+1

也就是說,實際上,我得到的結果。 'grep(BSD grep)2.5.1-FreeBSD' – Malvolio

回答

3

從你的數據,我得到這樣的輸出:

grep '[^[:digit:]]' file 
TEST 
55 55 Pink 
sss 
aaa 
ss aaa ss 
a 1 b 2 a b a 
Doop Dap 
12 13 
77a 

你得到12 13,因爲空間和13之間12是一個非數字字符。
這也給輸出,如果你前或數字後有空格,如:123<space>

爲了克服這一點,你可以這樣做:

grep '[^[:digit:] ]' file 
TEST 
55 55 Pink 
sss 
aaa 
ss aaa ss 
a 1 b 2 a b a 
Doop Dap 
77a 

甚至更​​好:

grep '[^[:digit:][:blank:]]' file