2013-03-10 37 views
15

Tôi muốn phát ra tiếng bíp, trong trường hợp có bất kỳ ngoại lệ nào trong các tệp nhật ký.Cách sử dụng đuôi kết hợp với sed.

Tôi đang sử dụng tập lệnh bash.

Nhưng tiếc là khi đuôi được sử dụng để kết hợp với sed, nó không hoạt động.

Tôi đã thử với các lệnh dưới đây và đăng tại đây.

tail -f mylogs.log | grep "Exception" | sed -e $'s/Exception/Exception\a/' 



tail -f mylogs.log | sed -e $'s/Exception/Exception\a/' 



tail -f mylogs.log | grep "Exception" | sed -e $'s/Exception/Exception\a/' 
+0

+1 cho cấu trúc '$ ''. Tôi chưa bao giờ thấy điều đó trước đây. –

Trả lời

25

Vấn đề là grep thấy rằng nó không phải bằng văn bản cho thiết bị đầu cuối, vì vậy nó đệm đầu ra của nó, cuối cùng bằng văn bản khối lớn mà sed có thể xử lý tất cả cùng một lúc. Để cho nó để in ra dòng trong thời gian sớm khi chúng có sẵn, sử dụng --line-buffered tùy chọn:

tail -f mylogs.log \ 
    | grep --line-buffered Exception \ 
    | sed -u -e $'s/Exception/Exception\a/' 

(Lưu ý rằng tôi cũng đã thêm -u cờ để sed, mà là tương tự như grep 's --line-buffered tùy chọn Trong thử nghiệm của tôi, nó dường như không tạo ra sự khác biệt cho lệnh này, nhưng tôi cho rằng tốt hơn nên đưa nó vào trường hợp.)

+0

Quan sát: '$ 's/Ngoại lệ/Ngoại lệ \ a /'' dường như không thay đổi văn bản nhưng '$ 's/Exception/Exception \\\ a /'' là trên hệ thống của tôi. –

+0

@ruakh, tôi vừa thử lệnh, nó chỉ ghi lại văn bản, nhưng không có âm thanh. Tôi có cần phải thực hiện bất kỳ cài đặt nào không ?? – Kiran

+0

@ another.anon.coward: '\ a' là ký tự cảnh báo (chuông); nó tạo ra một tiếng bíp, mà không ảnh hưởng đến sự xuất hiện trực quan của dòng. – ruakh

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