Truy xuất nhật ký 100 dòng cuối cùng


163

Tôi cần lấy 100 dòng nhật ký cuối cùng từ tệp nhật ký. Tôi đã thử lệnh sed

sed -n -e '100,$p' logfilename

Xin vui lòng cho tôi biết làm thế nào tôi có thể thay đổi lệnh này để lấy cụ thể 100 dòng cuối cùng .


Điều này được đề cập trong hướng dẫn: gnu.org/software/sed/manual/html_node/tail.html#tail , làm thế nào sed có thể mô phỏng đuôi.
Lars Fischer

1
đuôi -f -n 100 logfilename
Amitesh Bharti

Câu trả lời:


300

Bạn có thể sử dụng lệnh tail như sau:

tail -100 <log file>   > newLogfile

Bây giờ 100 dòng cuối cùng sẽ có mặt trong newLogfile

BIÊN TẬP:

Các phiên bản gần đây hơn của đuôi như được đề cập bởi twalberg sử dụng lệnh:

tail -n 100 <log file>   > newLogfile

17
Lưu ý rằng một số phiên bản gần đây hơn tailyêu cầu cú pháp tail -n 100 <filename>...
twalberg

14

Hãy nhìn xem, tập lệnh sed in 100 dòng cuối cùng bạn có thể tìm thấy trong tài liệu về sed ( https://www.gnu.org/software/sed/manual/sed.html#tail ):

$ cat sed.cmd
1! {; H; g; }
1,100 !s/[^\n]*\n//
$p

$ sed -nf sed.cmd logfilename

Đối với tôi nó khó hơn kịch bản của bạn vậy

tail -n 100 logfilename

đơn giản hơn nhiều Và nó khá hiệu quả, nó sẽ không đọc tất cả các tập tin nếu không cần thiết. Xem câu trả lời của tôi với báo cáo strace cho tail ./huge-file: /unix/102905/does-tail-read-the-whole-file/102910#102910


13

"Đuôi" là lệnh để hiển thị phần cuối của tệp, sử dụng các công tắc có sẵn phù hợp giúp chúng tôi có được đầu ra cụ thể hơn. công tắc được sử dụng nhiều nhất đối với tôi là -n và -f

TÓM TẮC

đuôi [-F | -f | -r] [-q] [-b số | -c số | -n số] [tập tin ...]

Đây

-n số: Vị trí là dòng số.

-f: Tùy chọn -f làm cho đuôi không dừng khi đạt đến cuối tệp, mà là chờ dữ liệu bổ sung được thêm vào đầu vào. Tùy chọn -f bị bỏ qua nếu đầu vào tiêu chuẩn là một đường ống, nhưng không phải nếu đó là một FIFO.

Truy xuất nhật ký 100 dòng cuối cùng

To get last static 100 lines  
     tail -n 100 <file path>

To get real time last 100 lines
     tail -f -n 100 <file path>

3

Tôi biết điều này rất cũ, nhưng, cho bất cứ ai nó có thể giúp đỡ.

less +F my_log_file.log

đó chỉ là cơ bản, với ít hơn bạn có thể làm những điều mạnh mẽ hơn nhiều. một khi bạn bắt đầu thấy các bản ghi bạn có thể thực hiện tìm kiếm, đi đến số dòng, tìm kiếm mẫu, nhiều hơn nữa cộng với nó là nhanh hơn cho các tệp lớn.

nó giống như vim cho nhật ký [hoàn toàn là ý kiến ​​của tôi]

tài liệu gốc ít hơn: https://linux.die.net/man/1/less

áo ít hơn: https://gist.github.com/glnds/8862214


1
len=`cat filename | wc -l`
len=$(( $len + 1 ))
l=$(( $len - 99 ))
sed -n "${l},${len}p" filename

dòng đầu tiên lấy độ dài (Tổng số dòng) của tệp sau đó +1 trong tổng số dòng sau đó chúng ta phải lấy 100 bản ghi, do đó, -99 từ tổng chiều dài, sau đó chỉ cần đặt các biến trong lệnh sed để lấy 100 dòng cuối cùng từ tệp

Tôi hy vọng điều này sẽ giúp bạn.

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.