Son 100 satırlık günlükleri al


164

Günlük dosyasından günlüklerin son 100 satırını almam gerekiyor. Sed komutunu denedim

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

Lütfen son 100 satırı özel olarak almak için bu komutu nasıl değiştirebilirim ?


Bu kılavuzda belirtilmiştir: gnu.org/software/sed/manual/html_node/tail.html#tail , sed'in kuyruğu nasıl taklit edebileceği.
Lars Fischer

1
kuyruk -f -n 100 logfilename
Amitesh Bharti

Yanıtlar:


302

Tail komutunu aşağıdaki gibi kullanabilirsiniz :

tail -100 <log file>   > newLogfile

Şimdi son 100 satır newLogfile

DÜZENLE:

Twalberg use komutunun belirttiği gibi kuyrukun daha yeni sürümleri :

tail -n 100 <log file>   > newLogfile

17
Bazı yeni sürümlerin tailsözdizimi gerektirdiğini unutmayın tail -n 100 <filename>...
twalberg

14

Bak, sed belgelerinde bulabileceğiniz son 100 satırı yazdıran sed komut dosyası ( 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

Benim için senaryondan çok daha zor

tail -n 100 logfilename

çok daha basit. Ve oldukça etkilidir, gerekli değilse tüm dosyaları okumaz. Strace raporu ile benim cevap bakınız tail ./huge-file: /unix/102905/does-tail-read-the-whole-file/102910#102910


13

"tail" bir dosyanın son bölümünü görüntüleme komutudur, uygun anahtarları kullanmak daha özel çıktılar almamıza yardımcı olur. benim için en çok kullanılan anahtar -n ve -f

ÖZET

kuyruk [-F | -f | -r] [-q] [-b sayı | -c numarası | -n sayı] [dosya ...]

Buraya

-n sayı: Konum, sayı satırlarıdır.

-f: -f seçeneği, dosya sonuna ulaşıldığında kuyruğun durmamasına, girdiye ek verilerin eklenmesini beklemesine neden olur. Standart giriş bir boru ise -f seçeneği yok sayılır, ancak FIFO ise yoksayılır.

Son 100 satırlık günlükleri al

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

Bunun çok eski olduğunu biliyorum, ama kim için yardımcı olursa olsun.

less +F my_log_file.log

bu sadece basit, daha azıyla çok daha güçlü şeyler yapabilirsiniz. günlükleri görmeye başladıktan sonra arama yapabilir, satır numarasına gidebilir, desen arayabilir, çok daha fazlası büyük dosyalar için daha hızlıdır.

günlükler için vim gibi [tamamen benim görüşüm]

orijinal belgenin belgeleri: https://linux.die.net/man/1/less

daha az hile sayfası: https://gist.github.com/glnds/8862214


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

ilk satır dosyanın uzunluğunu (Toplam satırlarını) alır, ardından toplam satırlarda +1 değerini alır, ardından 100 kaydı yakalamamız gerekir, böylece toplam uzunluktan -99 sonra son 100 satırı dosyadan almak için değişkenleri sed komutuna koyarız

Umarım bu sana yardımcı olmuştur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.