2012-12-16 28 views
5

Tôi đang tìm cách để grep một tệp cho một mẫu cụ thể có mẫu phủ định trong đó. Tôi đã một phù thủy log file báo cáo đơn vị phiên bản và tôi muốn để xem nếu có một báo cáo phiên bản đơn vị phù thủy khác sau đó 26.grep với mẫu âm

Gần nhất tôi có thể nhận được là:

mèo my.log | grep -i -e "version = 0x [^ 2] [^ 6]"

Sự trở lại trên một dòng chứa "version = 0x13" nhưng không trả về một dòng chứa "version = 0x23"

Có cách nào để nói grep để làm như vậy?

Cảm ơn.

+1

'phiên bản = 0x [0-9] +' 'grep -i my.log | grep -v 'version = 0x26''? Đây không phải là một câu hỏi lập trình, [Unix/Linux SE] (http://unix.stackexchange.com/) có vẻ phù hợp hơn với nó. – DCoder

+0

Điều đó sẽ không hoạt động - dấu + cần được trích dẫn hoặc bạn cần -E. –

Trả lời

7

Giải thích mô hình như một biểu thức chính quy perl sử dụng -P switch:

grep -iP 'version=0x(?!26)\d\d' my.log 
+0

Cảm ơn! Đó chính xác là những gì tôi đang tìm kiếm! – crowd

7
grep -i "version=0x[0-9]\\+" my.log | grep -iv "version=0x26" 
+0

Cảm ơn bạn đã phản hồi! – crowd