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

Содержание
  1. Peter Leung, «Командная строка: маленькие хитрости от Linux Commando»
  2. Выбираем нужные строки из файла с помощью sed
  3. Команда Head в Linux
  4. Синтаксис команды Head
  5. Как использовать команду головы
  6. Как отобразить определенное количество строк
  7. Как отобразить определенное количество байтов
  8. Как отображать несколько файлов
  9. Как использовать голову с другими командами
  10. Выводы
  11. 🐧 Как читать файл построчно | скрипт Bash [3 метода]
  12. Метод 1: использование перенаправление ввода
  13. Метод 2: использование команды cat
  14. Как это устроено:
  15. 3. Использование имени файла в качестве аргумента
  16. Заключение
  17. Просмотр содержимого файлов в командной строке Linux
  18. Команда cat
  19. Команда nl
  20. Команда less
  21. Команда more
  22. Команда head
  23. Команда tail
  24. Заключение
  25. Linux прочитать первые строки файла
  26. Операции с файлами и фильтрация
  27. cat, tail, head, tee: Команды для вывода содержимого файлов
  28. grep: Поиск строк в файлах
  29. wc: Подсчёт элементов в файлах
  30. sort: Сортировка содержимого файла

Peter Leung, «Командная строка: маленькие хитрости от Linux Commando»

Выбираем нужные строки из файла с помощью sed

Тому, кто пишет много скриптов bash, часто приходится выбирать нужные строки из текста, например готовые блоки кода. Вчера я как раз должен был извлечь первую строку из файла, назовем его somefile.txt.

Это очень просто сделать при помощи команды head:

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

Давайте попробуем команду sed ≈ редактор потока (STream Editor).

Моя первая попытка применить команду p (print) оказалась неудачной:

Обратите внимание, что редактор печатает весь файл, причем указанную первую строку печатает дважды. Почему? По умолчанию редактор перепечатывает на стандартный вывод каждую строку вводимого файла. Четко заданная команда 1p приказывает печатать первую строку. В итоге первая строка дублируется.

Чтобы этого не происходило нужно подавить дефолтный вывод при помощи опции -n, чтобы на выводе был только результат команды 1p:

Можно пойти другим путем и удалить из файла все строки, кроме первой:

где ‘1!d’ означает: если строка не является первой (!), то подлежит удалению. Обратите внимания на кавычки (одинарные). Они совершенно необходимы, так как без них конструкция 1!d вызовет последнюю запускавшуюся в шелле команду, начинающуюся с буквы d.

Для извлечения нескольких строк, скажем, со второй по четвертую, можно поступить одним из следующих способов:

Интервал обозначается через запятую включительно.

А если строки не идут друг за другом, например, с первой по вторую и еще четвертую?

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

Блестящий пример нестандартного подхода продемонстрировал в комментариях к этой статье некий Chris:

Если я хочу извлечь пятую строку файла, то делаю так:

А правда, здорово! И никаких заумных команд не надо с их километровыми манами. Кстати так и нужные блоки подряд идущих строк можно извлекать.

Источник

Команда Head в Linux

Команда head выводит первые строки (по умолчанию 10 строк) одного или нескольких файлов или передаваемых данных в стандартный вывод.

В этом руководстве мы объясним, как использовать утилиту head в Linux, на практических примерах и подробных объяснениях наиболее распространенных опций head.

Синтаксис команды Head

Синтаксис команды head следующий:

  • OPTION — варианты головы . Мы рассмотрим наиболее распространенные варианты в следующих разделах.
  • FILE — Ноль или более имен входных файлов. Если ФАЙЛ не указан или если ФАЙЛ — — , head будет читать стандартный ввод.

Как использовать команду головы

В простейшей форме при использовании без каких-либо параметров команда head отобразит первые 10 строк.

Как отобразить определенное количество строк

Используйте параметр -n ( —lines ), за которым следует целое число, указывающее количество отображаемых строк:

Вы можете опустить букву n и использовать только дефис ( — ) и цифру (без пробелов между ними).

Чтобы отобразить первые 30 строк файла с именем filename.txt , введите:

Следующее приведет к тому же результату, что и приведенные выше команды:

Как отобразить определенное количество байтов

Параметр -c ( —bytes ) позволяет распечатать определенное количество байтов:

Например, чтобы отобразить первые 100 байтов данных из файла с именем filename.txt , введите:

Вы также можете использовать суффикс множителя после числа, чтобы указать количество отображаемых байтов. b умножает его на 512, kB умножает на 1000, K умножает на 1024, MB умножает на 1000000, M умножает на 1048576 и так далее.

Следующая команда отобразит первые пять килобайт (2048) файла filename.txt :

Как отображать несколько файлов

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

Вы можете использовать те же параметры, что и при отображении одного файла.

В этом примере показаны первые 20 строк файлов filename1.txt и filename2.txt :

Читайте также:  Ручное обновление windows 10 20h2

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

Как использовать голову с другими командами

Команду head можно использовать в сочетании с другими командами, перенаправляя стандартный вывод из / в другие утилиты с помощью каналов.

Следующая команда будет хешировать переменную среды $RANDOM , отображать первые 32 байта и отображать случайную строку из 24 символов:

Выводы

К настоящему времени вы должны хорошо понимать, как использовать команду Linux head. Это дополнение к команде tail, которая выводит последние строки файла на терминал.

Источник

🐧 Как читать файл построчно | скрипт Bash [3 метода]

В этой статье мы изучим 3 метода в сценарии bash для чтения файла построчно.

Метод 1: использование перенаправление ввода

Самый простой способ прочитать файл построчно – использовать перенаправитель ввода в цикле while.

Чтобы продемонстрировать, мы создали образец файла с именем mycontent.txt и будем использовать его в этом руководстве.

Давайте создадим скрипт с именем example1.sh, который использует перенаправление ввода и цикл.

Как это устроено:

  • – Объявление оболочки “bash”
  • – Запуск цикла while и сохранение содержимого строки в переменной «y»
  • – Часть цикла while (начальная точка) – echo для вывода, а «$ y» означает вывод значения переменной, т.е. строки
  • – Чтение содержимого файла с помощью перенаправителя ввода «

Выполнение скрипта и вывод:

Метод 2: использование команды cat

Второй метод – использовать команду cat и затем отправлять ее вывод в качестве входных данных в цикл while, используя pipe.

Создайте файл скрипт example2.sh с таким содержанием:

Как это устроено:

  • – Объявление оболочки “bash”
  • – Вывод команды cat, отправленной как вход в цикл while с использованием пайпа «|» и сохранение содержимого строки в переменной «y»
  • – Часть цикла while (начальная точка) – echo для вывода, а «$ y» означает вывода значения переменной, т.е. строки
  • – Завершение цикла while с done

Совет: мы можем объединить все команды и использовать их как одинарные.

3. Использование имени файла в качестве аргумента

Этот третий метод отправляет имя файла в качестве входного аргумента через командную строку.

Создайте файл скрипта с именем example3.sh, как:

Как это устроено:

  • – Объявление оболочки “bash”
  • – Запуск цикла while и сохранение содержимого строки в переменной «y»
  • – Часть цикла while (начальная точка) – echo для вывода, а «$ y» означает вывод значения переменной, т.е. строки
  • – Чтение содержимого файла из аргумента командной строки, то есть $1, с использованием перенаправителя ввода «

Заключение

В этом руководстве объясняется, как читать содержимое файла построчно, используя скрипт оболочки bash с примерами.

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

Спасибо за прочтение, оставляйте свои предложения и отзывы в разделе комментариев.

Источник

Просмотр содержимого файлов в командной строке 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 строк файла.

Читайте также:  Оптимизация windows для виртуальной машины

Заключение

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

Источник

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

Библиотека сайта 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 :

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

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

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

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

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

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

Итак, давайте теперь вернемся к анализу лог-файла почтового демона. Нам необходимо найти все строки в файле /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 , мы используем:

Здесь мы применили описанный выше фильтр и отправили результат через канал в команды 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 , потому что о её возможностях можно написать целую книгу.

Источник

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