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