Как вывести строки файла, начиная с n-го поля

Как вывести строки файла, начиная с n-го поля

Рубрики:

Linux, Утилиты Linux

Метки:

, , ,

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

В этой статье мы расскажем о том, как выводить строки из файла, начиная с n-го поля, используя различные инструменты обработки текста в Linux.

Содержание:

  1. Используйте язык AWK
    1. Получаем заданное поле из файла с помощью команды awk
    2. Получаем заданное поле из файла или отдельных строк с помощью команд cat и awk
  2. Используйте команду cut
  3. Используйте цикл while
  4. Создайте таблицу HTML с помощью AWK
  5. Выводы

Используйте язык AWK

AWK — язык сценариев, который широко используется для обработки текста. Этот скриптовый язык позволяет выбирать данные из содержимого на основе предоставленного шаблона. Например, определенные поля из строк. Чтобы продемонстрировать вывод строк из файла, начиная с n-го поля, создадим файл file.txt, в котором записаны две строки текста:

 

cat file

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

Получаем заданное поле из файла с помощью команды awk

Чтобы убрать из вывода первые два поля и вывести остальные, выполните следующую команду:

 

awk 1

Читайте также: 12 полезных команд для фильтрации текста и эффективных операций с файлами в Linux.

Так как AWK разбивает строки на поля, разделенные пробелами, то первое поле каждой строки имеет обозначение — $1, а второе — $2. Поэтому в данной команде, мы задали «пустое» значение этим полям.

Соответственно, чтобы начать вывод строки с четвертого поля, введите в терминале:

 

Если в Вашем файле слова разделены не пробелами, а другими символами, например, двоеточиями — используйте опцию -F для указания другого разделителя:

Получаем заданное поле из файла или отдельных строк с помощью команд cat и awk

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

 

awk 2

Разберем ее детальнее:

  • сначала передаем вывод команды cat на ввод awk;
  • substr($0, index($0,$3)) — функция, которая разбивает строку на подстроки и принимает два аргумента (строку и начальный индекс);
  • $0 — представляет собой всю строку ввода;
  • index($0,$3) — возвращает начальный индекс третьего поля в строке, разделенного пробелами;
  • print — направляет результат операции в стандартный вывод.

По сути, substr($0, index($0,$3)) возвращает подстроку строки файла, начиная с третьего поля.

Используя этот способ, Вам необязательно указывать именно содержимое файла — Вы можете обработать и случайную строку. Например:

Используйте команду cut

Одна из самых популярных команд для обработки строк — утилита cut. Ее задача — удаление указанных секций из каждой строки файла. У нее есть несколько опций, которые нам сегодня понадобятся:

  • -d — устанавливает разделитель слов;
  • -f — перечисляет поля для вырезания из строк.

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

 

cut

Читайте также: 10 примеров команды CUT в UNIX и Linux.

Чтобы обрезать произвольную строку, используйте следующую конструкцию:

Используйте цикл while

Команды, которые мы использовали в предыдущих разделах, можно поместить в цикл while и получить все тот же результат:

 

while

Предлагаем Вам рассмотреть подробнее строки этого кода:

  • filename="file.txt" — переменная, имеющая значение file.txt (название файла);
  • echo "" — не влияет на обработку строк, использована для удобства вывода результата;
  • read -r line — считывает файл построчно;
  • echo "$line" | awk '{print substr($0, index($0,$3))}' — передает каждую строку команде awk.

Если Вам потребуется извлечь определенные поля из файлов в цикле, Вы также использовать команду cut вместо awk:

Создайте таблицу HTML с помощью AWK

Возможности скриптового языка AWK позволяют генерировать HTML-код, который можно будет вставить в разметку сайта. Допустим, у нас есть файл, содержащий несколько опций утилиты ls в виде таблицы:

 

cat ls

Чтобы модифицировать эту таблицу под HTML-разметку, мы выполнили команду awk следующим образом:

 

В этом коде:

  • BEGIN, END — операторные скобки, указывают на начало и конец блока инструкций соответственно;
  • <td></td> — HTML-теги, создают ячейки таблицы из полей строк;
  • <tr></tr> — HTML-теги, создают ряды таблицы;
  • $1; $1=""; print $0 — вводит в таблицу поля из строк файла.

Выводы

Вывести строки из файла, начиная с n-го поля — легкая задача, которая может быть осуществлена с помощью команды cut и скриптового языка AWK в Linux. Оба инструмента предоставляют различные опции для указания разделителя полей и диапазона отображаемых полей, что делает их универсальными для обработки текста. Используя эти утилиты, пользователи могут быстро извлекать необходимую информацию из больших наборов данных без необходимости вручную просматривать весь файл.

Спасибо за время, уделенное прочтению статьи!

Если возникли вопросы — задавайте их в комментариях.

Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!

Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Ciscoкурсы по кибербезопасностиполный курс по кибербезопасностикурсы DevNet / DevOps (программируемые системы) от Академии Ciscoкурсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).

Курсы Cisco, Linux, кибербезопасность, DevOps / DevNet, Python с трудоустройством!

Спешите подать заявку! Группы стартуют 25 января, 26 февраля, 22 марта, 26 апреля, 24 мая, 21 июня, 26 июля, 23 августа, 20 сентября, 25 октября, 22 ноября, 20 декабря.
Что Вы получите?
  • Поможем стать экспертом по сетевой инженерии, кибербезопасности, программируемым сетям и системам и получить международные сертификаты Cisco, Linux LPI, Python Institute.
  • Предлагаем проверенную программу с лучшими учебниками от экспертов из Cisco Networking Academy, Linux Professional Institute и Python Institute, помощь сертифицированных инструкторов и личного куратора.
  • Поможем с трудоустройством и стартом карьеры в сфере IT — 100% наших выпускников трудоустраиваются.
Как проходит обучение?
  • Проведем вечерние онлайн-лекции на нашей платформе.
  • Согласуем с вами удобное время для практик.
  • Если хотите индивидуальный график — обсудим и реализуем.
  • Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
  • Всем, кто боится потерять мотивацию и не закончить обучение, предложим общение с профессиональным коучем.
А еще поможем Вам:
  • отредактировать или создать с нуля резюме;
  • подготовиться к техническим интервью;
  • подготовиться к конкурсу на понравившуюся вакансию;
  • устроиться на работу в Cisco по специальной программе. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.
Чтобы учиться на курсах Cisco, Linux LPI, кибербезопасность, DevOps / DevNet, Python, подайте заявку или получите бесплатную консультацию.

Рубрики:

Linux, Утилиты Linux

Метки:

, , ,

Больше похожих постов

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Заполните поле
Заполните поле
Пожалуйста, введите корректный адрес email.
Вы должны согласиться с условиями для продолжения


Поиск по сайту
Лучшее
Популярное
Рубрики
Меню