2012-04-05 29 views
7

Sử dụng ví dụ sau, tôi cần lọc ra dòng có chứa 'ABC', trong khi bỏ qua các dòng khớp với 'ABC' có chứa dấu ngoặc vuông:Cần trợ giúp RegExp cho lệnh Bash grep của Linux để lọc ra các dòng chứa dấu ngoặc vuông

 
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 

đây là những gì tôi có, nhưng cho đến nay tôi không thể thành công lọc ra các dòng với dấu ngoặc vuông:

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

Xin giúp?

+0

+1 để nhập mẫu, giải thích rõ ràng về đầu ra mong muốn VÀ một số mẫu mã! Chúc may mắn. – shellter

Trả lời

3

Edited dựa trên nhận xét:

Hãy thử grep -i 'ABC' Metrics.log | grep -v "[[]" | grep -v "ABC\w"

Input:

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 

Output:

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

Nếu nó phù hợp với bạn, bạn có nhớ đánh dấu câu trả lời đúng không? Cảm ơn! – GetSet

+0

lưu ý, không cần phải mèo Metrics.log, chỉ cần cung cấp đó làm đầu vào cho 'grep đầu tiên. grep -i 'ABC' Metrics.log | grep -v "[[]" ' – matchew

+0

Cảm ơn. Đánh dấu là đã trả lời. Lưu ý về con mèo. Một trường hợp khác: cần bỏ qua các kết quả sai, như ABCD, nhưng không phải ABC: TEST. –

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

Điều này hoạt động tốt. Cảm ơn –

Các vấn đề liên quan