Обработка текста — это процесс анализа и изменения текстовой информации. Он может включать в себя редактирование, сортировку, извлечение данных и многое другое. В большинстве случаев специалисты выполняют манипуляции с текстом, содержащим неструктурированные данные. Одной из распространенных задач обработки текста является выбор определенных полей из файла, что может быть полезно для фильтрации или организации данных.
В этой статье мы расскажем о том, как выводить строки из файла, начиная с n-го поля, используя различные инструменты обработки текста в Linux.
Содержание:
- Используйте язык AWK
- Используйте команду cut
- Используйте цикл while
- Создайте таблицу HTML с помощью AWK
- Выводы
Используйте язык AWK
AWK — язык сценариев, который широко используется для обработки текста. Этот скриптовый язык позволяет выбирать данные из содержимого на основе предоставленного шаблона. Например, определенные поля из строк. Чтобы продемонстрировать вывод строк из файла, начиная с n-го поля, создадим файл file.txt
, в котором записаны две строки текста:
Допустим, нам нужно вывести на экран не все содержимое файла, а только часть строк, начинающихся с третьего поля. То есть, мы хотим в итоге получить такой вывод:
Получаем заданное поле из файла с помощью команды awk
Чтобы убрать из вывода первые два поля и вывести остальные, выполните следующую команду:
Читайте также: 12 полезных команд для фильтрации текста и эффективных операций с файлами в Linux.
Так как AWK разбивает строки на поля, разделенные пробелами, то первое поле каждой строки имеет обозначение — $1
, а второе — $2
. Поэтому в данной команде, мы задали «пустое» значение этим полям.
Соответственно, чтобы начать вывод строки с четвертого поля, введите в терминале:
Если в Вашем файле слова разделены не пробелами, а другими символами, например, двоеточиями — используйте опцию -F
для указания другого разделителя:
Получаем заданное поле из файла или отдельных строк с помощью команд cat и awk
Для решения поставленной задачи есть и другой способ. Чтобы вывести строки из файла с n-го поля, выполните приведенную ниже команду:
Разберем ее детальнее:
- сначала передаем вывод команды
cat
на вводawk
; substr($0, index($0,$3))
— функция, которая разбивает строку на подстроки и принимает два аргумента (строку и начальный индекс);$0
— представляет собой всю строку ввода;index($0,$3)
— возвращает начальный индекс третьего поля в строке, разделенного пробелами;print
— направляет результат операции в стандартный вывод.
По сути, substr($0, index($0,$3))
возвращает подстроку строки файла, начиная с третьего поля.
Используя этот способ, Вам необязательно указывать именно содержимое файла — Вы можете обработать и случайную строку. Например:
Используйте команду cut
Одна из самых популярных команд для обработки строк — утилита cut
. Ее задача — удаление указанных секций из каждой строки файла. У нее есть несколько опций, которые нам сегодня понадобятся:
-d
— устанавливает разделитель слов;-f
— перечисляет поля для вырезания из строк.
В нашем файле все слова разделены пробелами, тогда укажем его, как разделитель. Чтобы вывести все поля в каждой из строк, кроме первых двух, будем использовать -f3-
:
Читайте также: 10 примеров команды CUT в UNIX и Linux.
Чтобы обрезать произвольную строку, используйте следующую конструкцию:
Используйте цикл 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
в виде таблицы:
Чтобы модифицировать эту таблицу под 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 с трудоустройством!
- Поможем стать экспертом по сетевой инженерии, кибербезопасности, программируемым сетям и системам и получить международные сертификаты Cisco, Linux LPI, Python Institute.
- Предлагаем проверенную программу с лучшими учебниками от экспертов из Cisco Networking Academy, Linux Professional Institute и Python Institute, помощь сертифицированных инструкторов и личного куратора.
- Поможем с трудоустройством и стартом карьеры в сфере IT — 100% наших выпускников трудоустраиваются.
- Проведем вечерние онлайн-лекции на нашей платформе.
- Согласуем с вами удобное время для практик.
- Если хотите индивидуальный график — обсудим и реализуем.
- Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
- Всем, кто боится потерять мотивацию и не закончить обучение, предложим общение с профессиональным коучем.
- отредактировать или создать с нуля резюме;
- подготовиться к техническим интервью;
- подготовиться к конкурсу на понравившуюся вакансию;
- устроиться на работу в Cisco по специальной программе. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.