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 ?
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 ?
Yanıtlar:
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
tail
sözdizimi gerektirdiğini unutmayın tail -n 100 <filename>
...
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
"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>
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
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.