Linux прочитать первые 10 строк файла

Linux прочитать первые 10 строк файла

Библиотека сайта rus-linux.net

Операции с файлами и фильтрация

Chapter 5. Утилиты командной строки

Операции с файлами и фильтрация

Основная часть работы в командной строке ведётся с файлами. В этом разделе мы рассмотрим, как просматривать и фильтровать содержимое файлов, извлекать из файлов нужную информацию при помощи одной команды и сортировать их содержимое.

cat, tail, head, tee: Команды для вывода содержимого файлов

Эти команды имеют почти один и тот же синтаксис: имя_команды [опции] [файл(ы)], и могут быть использованы в каналах. Все они используются для вывода части файла согласно определенным критериям.

Утилита cat объединяет файлы и выводит результат на стандартный вывод. Это одна из наиболее широко используемых команд. Вы можете использовать:

для вывода, например, содержимого файла с журналом почтового демона на стандартный вывод [14] . Команда cat имеет очень полезную опцию ( -n ), которая позволяет вам выводить номера строк.

Некоторые файлы, типа журналов демонов (если они запущены) обычно имеют довольно большой размер [15] и полный их вывод на экран будет не очень полезным. Часто вам нужно увидеть только несколько строк из файла. Для этого вы можете воспользоваться командой tail . Следующая команда выведет (по умолчанию) последние 10 строк из файла /var/log/mail/info :

Вы можете использовать опцию -n для вывода последних N строк файла. Например, для вывода последних 2-х строк наберите:

Команда head похожа на tail , но она выводит первые строки файла. Следующая команда выведет (по умолчанию) первые 10 строк файла /var/log/mail/info :

Как и в случае с tail вы можете использовать опцию -n для указания количества выводимых строк. Например, для вывода первых 2-х строк наберите:

Также вы можете использовать эти две команды совместно. Например, если вы хотите увидеть только строки 9 и 10, вы можете воспользоваться командой, в которой head выберет первые 10 строк из файла и передаст их по каналу в команду tail.

Затем вторая часть команды отберет последние 2 строки и выведет их на экран. Таким же способом вы можете выбрать 20-ю от конца файла строку:

В этом примере мы говорим команде tail выбрать последние 20 строк файла и передать их по каналу в head. Затем команда head выводит на экран первую строку из полученных данных.

Допустим, что результат последнего примера нам нужно одновременно вывести на экран и сохранить его в файл results.txt . В этом нам может поможет утилита tee . Ее синтаксис:

Теперь мы можем изменить предыдущую команду следующим образом:

Давайте рассмотрим еще один пример. Нам нужно выбрать последние 20 строк, сохранить их в файл results.txt , а на экран вывести только первую из них. Тогда мы должны ввести следующее:

У команды tee есть полезная опция ( -a ), которая позволяет вам дописать данные в конец существующего файла.

Давайте вернемся назад к команде tail . Такие файлы как журналы обычно динамически изменяются, т.к. демон постоянно добавляет в них отчет о совершенных действиях или событиях. Поэтому, если вам нужно наблюдать за изменениями в лог-файле в режиме реального времени, тогда вам нужно воспользоваться преимуществами опции -f :

Читайте также:  Recover mails from windows mail

В этом случае все изменения в файле /var/log/mail/info будут немедленно выводиться на экран. Использование команды tail с опцией -f весьма полезно, когда вам нужно знать, как работает ваша система. Например, наблюдая за файлом журнала /var/log/messages , вы сможете всегда получать обновленную информацию о системных сообщенях и различных демонах.

В следующем разделе мы рассмотрим, как можно использовать утилиту grep в качестве фильтра для отделения сообщений Postfix от сообщений других служб.

grep: Поиск строк в файлах

Ни имя команды, ни ее аббревиатура (“General Regular Expression Parser” — синтаксический анализатор общих регулярных выражений) не слишком интуитивны, но ее действие и ее использование довольно просты для понимания: grep выполняет поиск в одном или нескольких файлах по шаблону, заданному в качестве аргумента. Ее синтаксис:

Если указано несколько файлов, в отображаемом результате их имена будут выводиться перед каждой найденной строкой. Для предотвращения вывода этих имен используйте опцию -h ; используйте опцию -l для вывода только имен файлов с найденными совпадениями. Шаблон — это регулярное выражение, хотя в большинстве случаев он состоит просто из одного слова. Наиболее часто используемые опции:

  • -i : поиск без учета регистра (т.е. игнорирование разницы между верхним и нижним регистром);
  • -v : обратный поиск. Вывод строк, которые не соответствуют шаблону;
  • -n : вывод номера строки для каждой из найденных строк;
  • -w : сообщает grep’у, что шаблон должен совпадать со всем словом.

Итак, давайте теперь вернемся к анализу лог-файла почтового демона. Нам необходимо найти все строки в файле /var/log/mail/info , содержащие шаблон “postfix”. Для этого мы вводим такую команду:

Команда grep может быть использована в канале. Так мы можем получить такой же результат, что и в предыдущем примере, при помощи следующего:

Если нам нужно найти все строки, не содержащие шаблона “postfix”, нам надо будет воспользоваться опцией -v :

Давайте предположим, что нам необходимо найти все сообщения об успешно отправленных письмах. В этом случае мы должны отфильтровать все строки, добавленные почтовым демоном в файл журнала (содержащие шаблон “postfix”), и они должны содержать сообщение об успешной отправке (“status=sent”):

В этом случае команда grep использована дважды. Это разрешается, но не совсем красиво. Мы можем получить тот же результат при помощи утилиты fgrep . Сначала нам нужно создать файл, содержащий шаблоны, записанные в столбик. Такой файл может быть создан следующим образом (мы используем patterns.txt в качестве имени файла):

Затем мы вызываем следующую команду, в которой мы используем файл patterns.txt со списком шаблонов и утилиту fgrep вместо “двойного вызова” команды grep:

Файл ./patterns.txt может содержать сколько угодно шаблонов. Каждый из них должен быть введен в виде одной строки. Например, для выборки сообщений о письмах, успешно отправленных на адрес peter@mandrakesoft.com , достаточно будет добавить адрес этого электронного ящика в наш файл ./patterns.txt , выполнив следующую команду:

Понятное дело, что вы можете комбиноровать команду grep с tail и head . Если нам нужно найти сообщения о предпоследнем электроном письме, отправленном на адрес peter@mandrakesoft.com , мы используем:

Читайте также:  Linux what is cpu speed

Здесь мы применили описанный выше фильтр и отправили результат через канал в команды tail и head. Они выбрали из данных предпоследнее значение.

wc: Подсчёт элементов в файлах

Команда wc (Word Count — подсчёт слов) используется для подсчёта числа строк и слов в файлах. Она также полезна для подсчёта байтов, символов и длины самой длинной строки. Её синтаксис:

Список полезных опций:

  • -l : вывод количества новых строк;
  • -w : вывод количества слов;
  • -m : вывод общего количества символов;
  • -c : вывод количества байт;
  • -L : вывод длины самой длинной строки в заданном тексте.

По умолчанию команда wc выводит количество новых строк, слов и символов. Вот несколько примеров использования:

Если нам нужно определить число пользователей в нашей системе, мы можем ввести:

Если нам нужно узнать число CPU в нашей системе, мы пишем:

В предыдущем разделе мы получили список сообщений об успешно отправленных письмах на адреса, перечисленные в нашем файле ./patterns.txt . Если нам нужно узнать количество таких сообщений, мы можем перенаправить наш отфильтрованный результат через канал в команду wc :

sort: Сортировка содержимого файла

Ниже представлен синтаксис этой можно утилиты для сортировки [16] :

Давайте отсортируем часть файла /etc/passwd . Как видите сам по себе этот файл не отсортирован:

Если нам нужно отсортировать его по полю login , мы набираем:

По умолчанию команда sort сортирует информацию по первому полю в порядке возрастания (в нашем случае по полю login ). Если нам нужно отсортировать данные в порядке убывания, мы используем опцию -r :

Для каждого пользователья имеется свой собственный UID , записанный в файле /etc/passwd . Давайте отсортируем этот файл в порядке возрастания по полю UID :

Здесь мы используем следующие опции sort:

  • -t»:» : сообщает sort ‘у, что разделителем полей является символ «:» ;
  • -k3 : означает, что сортировка должна быть выполнена по по третьему столбцу;
  • -n : сообщает, что выполняется сортировка числовых данных, а не буквенных.

То же самое может быть выполнено в обратном порядке:

Обратите внимание, что sort обладает двумя важными опциями:

  • -u : строгая сортировка: исключаются повторяющиеся поля сортировки;
  • -f : игнорирование регистра (строчные символы обрабатываются так же, как и прописные).

И в заключение, если нам нужно найти пользователя с наивысшим UID , мы можем воспользоваться этой командой:

, где мы сортируем файл /etc/passwd в порядке возрастания по столбцу UID и прогоняем результат по каналу через команду tail , которая выводит первое значение из отсортированного списка.

[14] Некоторые примеры в этом разделе основаны на реальной работе с файлами журналов некоторых серверов (служб, демонов). Убедитесь, что у вас запущен syslogd (разрешает журналирование демонов), соответствующий демон (в нашем случае Postfix), и что вы в работаете под root ‘ом. И, естественно, вы всегда можете применять наши примеры к другим файлам.

[15] Например, файл /var/log/mail/info содержит информацию обо всех отправленных письмах, сообщениях о выборке почты пользователями по протоколу POP и т.д.

[16] Здесь мы только вкратце рассмотрим sort , потому что о её возможностях можно написать целую книгу.

Источник

linux-notes.org

Команда «head» в Unix или Linux системах используется для печати «N» линии из файла в терминал. Синтаксис команды head является таким:

Параметры команды head:

  • c : Выводит первые «N» байт файла; С ведущим «-«, печатает все, кроме последних N байт файла.
  • n : Выводит первые N строк; С ведущим «-«, печатает все, но последние N строк каждого файла.
Читайте также:  Как восстановить диспетчер задач windows

Утилита head в примерах Unix/Linux.

В этой статье «Утилита head в примерах Unix/Linux» я расскажу как использовать утилиту head и на готовых примерах покажу как это работает.

Создайте следующий файл use_head.txt в операционной системе Linux или Unix для практикующих примеров со следующим содержанием:

Вывод первых 10 строк.

По умолчанию, команда head выводит первые 10 строк из файла:

Показать первые N строк.

Используйте опцию «-n», чтобы напечатать первые «N» строк из файла. Следующий пример выведет первые 2 строки из файла:

Пропустить последние N строк.

Вы можете пропустить последние N строк из файла и распечатать оставшиеся линии. В следующем примере я пропущу последние 2 строки и выведу оставшиеся строки:

Распечатать первые N байт.

Используйте опцию «-c», чтобы напечатать первые N байт из файла. Следующий пример печатает первые 4 байта из файла:

Пропустить вывод последних N байт.

Используйте ведущий параметр «-«, чтобы пропустить вывод последних N байт:

Вывести строки между М и N линиями.

Вы можете комбинировать команду head и выводить строки с определенным диапазоном M и N. Следующая команда выведет строки между 4-й и 9-й строкой:

Моя тема «Утилита head в примерах Unix/Linux» подошла к завершению.

Источник

Просмотр содержимого файлов в командной строке Linux

Рассмотрим несколько команд, которые используются для просмотра содержимого текстовых файлов в командной строке Linux.

Команда cat

Команда cat выводит содержимое файла, который передается ей в качестве аргумента.

Это самый простой и наиболее часто используемый способ для вывода содержимого текстовых файлов. Но выводить большие файлы через cat не всегда удобно.

Команда nl

Команда nl действует аналогично команде cat , но выводит еще и номера строк в столбце слева.

Команду nl удобно применять для просмотра программного кода или поиска строк в файлах конфигурации.

Команда less

Утилита less выводит содержимое файла, но отображает его только в рамках текущего окна в режиме просмотра.

Вы можете прокручивать текст файла клавишами стрелок или перелистывать страницы клавишами w и z .

Для поиска текста внутри файла нажмите / .

Для просмотра списка доступных горячих клавиш нажмите h

Чтобы выйти из режима просмотра используется клавиша q .

Очень удобно, что после выхода окно терминала остается чистым и не содержит текст файла.

Команда more

Команда more очень похожа на команду less . Она также выводит файл в терминале в режиме просмотра, но имеет некоторые отличия от команды less.

Например, less в конце файла выводит сообщение (END) (или EOF — End Of File) и ожидает нажатия клавиши q чтобы закрыть режим просмотра, а more по достижении конца файла сразу возвращает управление в терминал.

Также more после своей работы оставляет текст файла в терминале, а less работает «чисто» и не сохраняет текст в терминале.

Команда head

Команда head выводит на экран только первые 10 строк файла.

Используя опцию -n можно задать количество строк, которое нужно вывести. Например, чтобы вывести 15 строк используется команда:

Вместо -n можно просто использовать знак минус — , за которым сразу указывается количество строк.

Команда tail

Команда tail аналогична команде head , но выводит последние 10 строк файла.

Заключение

Команды, которые мы рассмотрели, имеют дополнительные возможности и области применения. Для получения справки по каждой команде можно воспользоваться Man-страницами.

Источник

Оцените статью