2012-04-05 79 views
7

使用以下示例,我需要僅過濾掉包含'ABC'的行,同時忽略包含方括號的匹配'ABC'的行:需要RegExp幫助Linux Bash grep命令過濾掉包含方括號的行

 
2012-04-04 04:13:48,760~sample1~ABC[TLE 5332.233 2/13/2032 3320392]:CAST 
2012-04-04 04:13:48,761~sample2~ABC 
2012-04-04 04:13:48,761~sample3~XYZ[BAC.CAD.ABC.CLONE 232511]:TEST 

這裏是我有什麼,但到目前爲止,我無法成功地過濾掉方括號中的臺詞:

bash-3.00$ cat Metrics.log | grep -e '[^\[\]]' | grep -i 'ABC'

請幫助?

+0

1爲樣本輸入,所期望的輸出的明確的解釋和一些樣本碼!祝你好運。 – shellter 2012-04-05 14:01:59

回答

3

被修改基於評論:

嘗試grep -i 'ABC' Metrics.log | grep -v "[[]" | grep -v "ABC\w"

輸入:

2012-04-04 04:13:48,760~sample1~ABC[TLE 5332.233 2/13/2032 3320392]:CAST 
2012-04-04 04:13:48,761~sample2~ABC 
2012-04-04 04:13:48,761~sample3~XYZ[BAC.CAD.ABC.CLONE 232511]:TEST 
2012-04-04 04:13:48,761~sample4~XYZ 
2012-04-04 04:13:48,761~sample5~ABCD 
2012-04-04 04:13:48,761~sample6~ABC:TEST 

輸出:

2012-04-04 04:13:48,761~sample2~ABC 
2012-04-04 04:13:48,761~sample6~ABC:TEST 
+1

如果它適合你,你會介意標記答案是正確的嗎?謝謝! – GetSet 2012-04-05 14:18:38

+0

請注意,不需要cat Metrics.log,只需將它作爲第一個'grep的輸入。 grep -i'ABC'Metrics.log | grep -v「[[]」' – matchew 2012-04-05 14:32:36

+0

謝謝。標記爲已回答。注意到這隻貓。還有一種情況:需要跳過錯誤匹配,如ABCD,但不要ABC:TEST。 – 2012-04-05 15:27:55

1
$cat log | grep -v '\[.*\]' | grep ABC 
+0

這也適用。謝謝 – 2012-04-05 15:31:06