2009-11-19 30 views
5

Khi xem tệp nhật ký ngày càng tăng, ví dụ: "less -iS + F service.log" Tôi muốn để giới hạn hiển thị thành các dòng khớp với một mẫu nhất định.Chức năng lọc cho ít hơn + F

tôi đã cố gắng một cái gì đó giống như

less +F service.log | grep <pattern> | less +F 

mà không hoạt động. Ngoài ra

cat < service.log | grep <pattern> | less +F 

không làm những gì tôi muốn. Có vẻ như đầu vào đã bị đóng và ít hơn không hiển thị thay đổi.

Làm cách nào để giới hạn hiển thị cho các dòng khớp với mẫu nhất định?

Trả lời

0
tail -f service.log | grep <pattern> 
+0

Cám ơn cân nhắc câu hỏi của tôi mặc dù đây không phải là chính xác những gì tôi muốn. Tôi muốn có chức năng "ít" hơn, ví dụ: cuộn, tìm kiếm, hightlighting trong kết quả đầu ra. Một cái gì đó như "tail -f service.log | grep | less + F" mà không may là không làm điều đó. – axelrose

0

Các giải pháp có vẻ đơn giản

LESSOPEN='|grep <pattern> %s' less +F service.log 

nhưng ít không tiếp tục đọc dòng mới từ tập tin log phát triển.

1

Nếu bạn không nhớ sinh sản và rách xuống một vài quá trình mỗi dòng, sử dụng một đọc trong khi vòng lặp

tail -f filename.log|while read line; do echo $line | grep pattern; done 
1

Tôi vẫn chưa làm việc ra làm thế nào để làm điều này mà không có một tập tin tạm thời, nhưng đây là một kịch bản thể hiện chức năng grep -filtered less +F (làm sạch tập tin tạm thời của nó). Tôi gọi nó là lessf.

Một trong những yếu tố quan trọng là --line-buffered lập luận để grep cho phép tail sản lượng để tiếp tục chảy qua đường ống (các unbuffer lệnh được cung cấp bởi expect cung cấp chức năng tương tự như đối với bất kỳ chương trình).

#!/bin/sh 
LOGFILE=$1 
shift 
[email protected] 
TEMP_DIR=/tmp/lesstmp 
TEMP_FILE="$TEMP_DIR/$(basename $LOGFILE)" 
[ ! -d $TEMP_DIR ] && mkdir $TEMP_DIR 
trap 'rm -rf "$TEMP_DIR"; exit' INT TERM EXIT 
(tail -f "$LOGFILE" | grep --line-buffered $PATTERN) > "$TEMP_FILE" | less +F "$TEMP_FILE" 
trap - INT TERM EXIT 

sử dụng Ví dụ:

lessf /var/log/system.log foobar

lessf /var/log/system.log -v nobar

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