Grep log cho một số từ nhất định nếu theo sau bởi một từ khác


0

Tôi có một tệp nhật ký với các mục như sau:

Đầu vào

php notice bob
php notice winner
php notice blah winner
php notice asfsdf test
php erro)r bob                                                                                                
php error winner
php error trash winner
php error junk test
print this line

Đầu ra

php notice winner
php notice blah winner                                                                                        
php error winner
php error trash winner
print this line

Những gì tôi đang cố gắng làm là khớp tất cả các dòng từ một tệp nhật ký trừ khi - nó chứa phptheo sau bởi errorhoặc notice. Nếu nó chứa phptheo sau bởi errorhoặc notice, thì nó chỉ nên khớp nếu winnercũng nằm trong chuỗi. Regex-foo của tôi yếu. Cảm ơn.

Câu trả lời:


1

Dùng cái này: grep 'php\s\+\(error\|notice\).*winner' mylogfile


0

Có thể có một cách để khiến grep loại bỏ chuỗi đó trong một chuỗi nhưng cá nhân tôi nghĩ rằng tôi sẽ tạo ra kịch bản để xử lý điều đó trong cả perl hoặc bash. Trong bash nó sẽ giống như

while read line
do
# If line contains "php error" or "php notice" and "winner", print it, else skip it
   if echo $line | grep "php error" >/dev/null  || echo $line | grep -q "php notice" >/dev/nulll; then
       if echo $line | grep "winner" > /dev/null; then
           echo $line
       fi
   else 
   # If line does not contain "php error" or "php notice", print it.
       echo $line
   fi
done

Tôi không có một hệ thống tiện dụng để kiểm tra / gỡ lỗi này ngay bây giờ, vì vậy bạn có thể phải điều chỉnh nó một chút.


Cảm ơn. Tôi vẫn hy vọng tìm thấy một regex cho nó. Tôi đang tham gia vào các tệp ở đuôi và một tệp cần khớp với mẫu "php (cảnh báo | lỗi). + Bcooper" nhưng tệp khác thì không. Vấn đề là bạn không thể grep một trong các tệp đi vào đuôi.
Brian

Điều này vẫn sẽ làm việc cho điều đó. Tôi đoán bạn đang sử dụng 'tail -f fileA -f fileB' Nếu vậy, bạn chỉ cần thêm tập lệnh của mình vào cuối. 'đuôi -f tập tinA -f tập tinB | kịch bản '
OldWolf
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.