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 .
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 .
Câu trả lời:
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
tail
yêu cầu cú pháp tail -n 100 <filename>
...
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
"Đ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>
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
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.