Crmgo Blog

Читање редова из фајлова

Читање редова из фајлова

Пример 1: Извођење одређених редова по њиховим бројевима помоћу команде sed. Команда омогућава преглед само жељених редова под одређеним бројевима, који су експлицитно наведени. Синтакса: $ sed -n -e Xp -e Yp FILENAME sed: команда,...

Читање редова из фајлова

Primer 1: Ispis određenih redova po njihovim brojevima pomoću komande sed

Komanda omogućava pregled samo potrebnih redova pod određenim brojevima, koji su eksplicitno navedeni.

Sintaksa:

  1. $ sed -n -e Xp -e Yp FILENAME

 

sed : komanda koja podrazumevano ispisuje sve redove bez izuzetka -n : suzbijanje ispisivanja -e CMD : izvršna komanda Xp: ispis reda pod brojem X Yp: ispis reda pod brojem Y FILENAME : ime obrađivanog fajla

U primeru ispod ispisuju se redovi 120, 145, 1050 fajla syslog.

  1. $ sed -n -e 120p -e 145p -e 1050p /var/log/syslog

U sledećem primeru možete pregledati sadržaj fajla var/log/cron, počevši od reda broj 101, završavajući redom broj 110.

M – početni red N – krajnji red

Sintaksa:

  1. sed -n M,Np FILENAME

 

  1. $ sed -n 101,110p /var/log/cron

Primer 2: Ispis prvih N redova fajla pomoću komande head

U ovom primeru ispisuju se prvih 15 redova fajla /var/log/maillog.

Sintaksa:

  1. head -n N FILENAME

 

  1. $ head -n 15 /var/log/maillog

Da biste ispisali prvih 10 redova dnevnika, zamenite 15 sa 10 u primeru.

Primer 3: Ne ispisivati poslednjih N redova fajla pomoću komande head

U ovom primeru je prikazano kako ignorisati poslednjih N redova i prikazati samo preostale redove počevši od početka fajla.

Синтаксис:

  1. head -n -N FILENAME

Пример показује како се могу извести све линије фајла /var/log/secure, осим последњих 250.

  1. $ head -n -250 /var/log/secure

Пример 4: Извођење последњих N линија фајла помоћу команде tail

Синтаксис: tail -n N FILENAME

У овом примеру изводе се само последње 50 линија фајла /var/log/messages. Да бисте извели на екран последњих 100 линија лога, промените 50 на 100.

  1. $ tail -n 50 /var/log/messages

Пример 5: Не извођење првих N-1 линија фајла помоћу команде tail

Помоћу ове команде можете игнорисати првих N-1 линија и приказати само преостале линије.

Синтаксис:

  1. tail -n +N FILENAME

У овом примеру је приказано како се игноришу прве 4 линије фајла /etc/xinetd.conf, који садржи само коментаре.

  1. $ tail -n +5 /etc/xinetd.conf
  2. defaults
  3. {
  4. instances = 60
  5. log_type = SYSLOG authpriv
  6. log_on_success = HOST PID
  7. log_on_failure = HOST
  8. cps = 25 30
  9. }
  10. includedir /etc/xinetd.d

Пример 6: Преглед растућег лога у реалном времену помоћу команде tail

Verovatno je ovo jedna od najčešće korišćenih komandi od strane sistemskih administratora. Za pregled uvećavajuće datoteke i ispis samo ažuriranog sadržaja dnevnika, koristite komandu tail -f kako je prikazano u nastavku.

U sledećem primeru prikazuje se u realnom vremenu sadržaj datoteke /var/log/syslog.

Sintaksa:

  1. tail -f FILENAME

 

  1. $ tail -f /var/log/syslog

Primer 7: Ispis određenih redova (po broju reda) pomoću komandi head i tail

M – početni red N – krajnji red

Sintaksa:

  1. cat file | tail -n +N | head -n (M-N+1)

U donjem primeru ispisuju se redovi 101 – 110 datoteke /var/log/anaconda.log

  1. $ cat /var/log/anaconda.log | tail -n +101 | head -n 10

 

cat : ispisuje celu datoteku u stdout. tail -n +101 : ignoriše redove do navedenog broja, a zatim počinje da ispisuje redove počevši od njega. head -n 10 : ispisuje prvih 10 redova, odnosno od 101 do 110, preostale ignoriše.

Primer 8: Ispis redova koji se poklapaju sa šablonom, kao i nekoliko redova koji odmah slede nakon onih koji se poklapaju.

U sledećem primeru prikazano je kako ispisati redove koji se poklapaju sa šablonom „Initializing CPU“ iz datoteke /var/log/dmesg, kao i 5 redova koji odmah slede nakon njih.

  1. # grep "Initializing CPU#1" /var/log/dmesg
  2. Initializing CPU#1

[Napomena: ova komanda ispisuje samo redove koji se poklapaju sa šablonom]

  1. # grep -A 5 "Initializing CPU#1" dmesg
  2. Initializing CPU#1
  3. Calibrating delay using timer specific routine.. 3989.96 BogoMIPS (lpj=1994982)
  4. CPU: After generic identify, caps: bfebfbff 20100000 00000000 00000000
  5. CPU: After vendor identify, caps: bfebfbff 20100000 00000000 00000000
  6. monitor/mwait feature present.
  7. CPU: L1 I cache: 32K, L1 D cache: 32K

[Napomena: ova komanda izlazi sa podudarnom linijom i 5 linija nakon nje]

Uz komandu grep dostupne su i sledeće operacije:

Prikaz linija koje se poklapaju sa šablonom – osnovna funkcija komande grep. Prikaz samo odabranih karaktera. Prikaz N linija nakon podudaranja pomoću argumenta -A. Prikaz N linija pre podudaranja pomoću argumenta -B. Prikaz N linija pre i posle podudaranja pomoću argumenta -C.

Primer 9: Izlaz određenih bajtova iz fajla.

U sledećem primeru prikazano je kako izvesti ili prvih 40 ili poslednjih 30 bajtova fajla.
Izlaz prvih 40 bajtova fajla syslog.

  1. $ head -c40 /var/log/syslog

Izlaz poslednjih 30 bajtova fajla syslog.

  1. $ tail -c30 /var/log/syslog

Primer 10: Pregled kompresovanih logova.

Nakon određenog vremenskog perioda svi sistemski logovi se kompresuju. Možete ih dekomprimovati „u letu“ i obraditi rezultat pomoću druge komande. Kako to učiniti prikazano je u nastavku.

Izlaz prvih N linija kompresovanog fajla.

  1. $ zcat file.gz | head -250

Prikaz poslednjih N redova kompresovanog fajla.

  1. $ zcat file.gz | tail -250

Izostavljanje poslednjih N redova kompresovanog fajla.

  1. $ zcat file.gz | head -n -250

Izostavljanje prvih N redova kompresovanog fajla.

  1. $ zcat file.gz | tail -n +250

Pregled redova koji odgovaraju šablonu

  1. $ zcat file.gz | grep -A2 'error'

Pregled skupa redova po navedenom opsegu njihovih brojeva.

  1. $ zcat file.gz | sed -n -e 45p -e 52p

Napomena: tekst može biti uz pomoć AI uz ljudsku proveru. Odgovoran: Dmytro Lomaka, Kaltenkirchen.

Kategorije: sed