Mặc dù tôi không nghĩ rằng pierr có mối quan tâm này, tôi cần một giải pháp sẽ không trì hoãn đầu ra từ "đuôi" trực tiếp của tệp, vì tôi muốn theo dõi một số nhật ký cảnh báo đồng thời, tiền tố mỗi dòng với tên của nhật ký tương ứng .
Thật không may, sed, cắt, vv đã giới thiệu quá nhiều bộ đệm và khiến tôi không nhìn thấy các dòng mới nhất. Đề nghị sử dụng -s
tùy chọn của Steven Penny nl
rất hấp dẫn và thử nghiệm đã chứng minh rằng nó không giới thiệu bộ đệm không mong muốn liên quan đến tôi.
Tuy nhiên, có một số vấn đề khi sử dụng nl
liên quan đến mong muốn loại bỏ các số dòng không mong muốn (ngay cả khi bạn không quan tâm đến tính thẩm mỹ của nó, có thể có trường hợp sử dụng các cột phụ sẽ không mong muốn). Đầu tiên, sử dụng "cắt" để loại bỏ các con số giới thiệu lại vấn đề đệm, do đó, nó phá hỏng giải pháp. Thứ hai, sử dụng "-w1" không giúp ích gì, vì điều này KHÔNG giới hạn số dòng trong một cột - nó chỉ rộng hơn khi cần nhiều chữ số hơn.
Sẽ không hay nếu bạn muốn chụp cái này ở nơi khác, nhưng vì đó chính xác là những gì tôi không cần làm (mọi thứ đã được ghi vào tệp nhật ký rồi, tôi chỉ muốn xem nhiều lần trong thời gian thực), tốt nhất cách để mất số dòng và chỉ có tiền tố của tôi là bắt đầu -s
chuỗi bằng trả về vận chuyển (CR hoặc ^ M hoặc Ctrl-M). Ví dụ:
#!/bin/ksh
# Monitor the widget, framas, and dweezil
# log files until the operator hits <enter>
# to end monitoring.
PGRP=$$
for LOGFILE in widget framas dweezil
do
(
tail -f $LOGFILE 2>&1 |
nl -s"^M${LOGFILE}> "
) &
sleep 1
done
read KILLEM
kill -- -${PGRP}
sed
các tác vụ nhẹ như thế này. Nếu "tiền tố" được biết đến, rất dễ dàng để chọn một ký tự không phải từ "tiền tố".