Crmgo Блог

Читання рядків з файлів

Читання рядків з файлів

Приклад 1: Виведення певних рядків за їхніми номерами за допомогою команди sed Команда дозволяє переглядати лише потрібні рядки під певними номерами, які явно описуються. Синтаксис: $ sed - n - e Xp - e Yp FILENAME sed : команда,…

Читання рядків з файлів

Приклад 1: Виведення певних рядків за їхніми номерами за допомогою команди sed

Команда дозволяє переглядати лише потрібні рядки під певними номерами, які явно описуються.

Синтаксис:

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

 

sed : команда, яка за замовчуванням виводить усі без винятку рядки -n : придушення виводу -e CMD : виконувана команда Xp: виведення рядка під номером X Yp: виведення рядка під номером Y FILENAME : ім'я оброблюваного файлу

У прикладі нижче виводяться рядки 120, 145, 1050 файлу syslog.

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

У наступному прикладі ви можете переглянути вміст файлу var/log/cron, починаючи з рядка номер 101, закінчуючи рядком номер 110.

M – початковий рядок N – кінцевий рядок

Синтаксис:

  1. sed -n M,Np FILENAME

 

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

Приклад 2: Виведення перших N рядків файлу за допомогою команди head

У цьому прикладі виводяться перші 15 рядків файлу /var/log/maillog.

Синтаксис:

  1. head -n N FILENAME

 

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

Щоб вивести перші 10 рядків логу, поміняйте в прикладі 15 на 10.

Приклад 3: Не виводити останні N рядків файлу за допомогою команди head

У цьому прикладі показано, як ігнорувати останні N рядків і показувати лише решту рядків з початку файлу.

Синтаксис:

  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

Напевно, це одна з найбільш часто використовуваних сисадмінами команд. Для перегляду файлу, що збільшується, і виведення лише оновленого вмісту логу використовуйте команду tail -f, як показано нижче.

У наступному прикладі виводиться в реальному часі вміст файлу /var/log/syslog.

Синтаксис:

  1. tail -f FILENAME

 

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

Приклад 7: Виведення певних рядків (за номером рядка) за допомогою команд head і tail

M – початковий рядок N – кінцевий рядок

Синтаксис:

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

У прикладі нижче виводяться рядки 101 – 110 файлу /var/log/anaconda.log

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

 

cat : виводить весь файл у stdout. tail -n +101 : ігнорує рядки до вказаного номера, потім починає виводити рядки, починаючи з нього. head -n 10 : виводить перші 10 рядків, тобто з 101 до 110, решту – ігнорує.

Приклад 8: Виведення рядків, що збігаються з шаблоном, а також кількох рядків, що йдуть одразу за тими, що збігаються.

У наступному прикладі показано, як вивести рядки, що збігаються з шаблоном «Initializing CPU», з файлу /var/log/dmesg, а також 5 рядків, що йдуть одразу за ними.

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

[Увага: ця команда виводить лише рядки, що збігаються з шаблоном]

  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

[Увага: ця команда виводить рядок, що збігається, та 5 рядків після нього]

З командою grep також доступні такі операції:

Перегляд рядків, що збігаються з шаблоном – базова функція команди grep. Перегляд лише відібраних символів. Перегляд N рядків після рядка, що збігся, за допомогою аргументу -A. Перегляд N рядків перед рядком, що збігся, за допомогою аргументу -B. Перегляд N рядків до та після рядка, що збігся, за допомогою аргументу -C.

Приклад 9: Виведення певних байтів із файлу.

У наступному прикладі показано, як вивести або перші 40, або останні 30 байтів файлу.
Виведення перших 40 байтів файлу syslog.

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

Виведення останніх 30 байтів файлу syslog.

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

Приклад 10: Перегляд стиснених логів.

Через певний проміжок часу всі системні логи стискаються. Ви можете розпакувати їх «на льоту» та обробити результат за допомогою іншої команди. Як це зробити, показано нижче.

Виведення перших N рядків стисненого файлу.

  1. $ zcat file.gz | head -250

Виведення останніх N рядків стисненого файлу.

  1. $ zcat file.gz | tail -250

Ігнорування останніх N рядків стисненого файлу.

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

Ігнорування перших N рядків стисненого файлу.

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

Перегляд рядків, що збігаються з шаблоном

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

Перегляд набору рядків за вказаним діапазоном їхніх номерів .

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

Примітка: матеріал міг бути створений за підтримки ШІ з подальшою людською редакцією. Відповідальний за зміст: Dmytro Lomaka, Kaltenkirchen.

Рубрики: sed