Работа с текстом — важная часть использования Linux. Редактирование файлов, обработка данных или написание скриптов часто требуют изменения и упорядочивания строк в файлах.
Одна из распространенных задач — добавление новых строк в файл. Записать строку в конец довольно просто. А вот, чтобы вставить ее в середину файла, понадобятся специальные команды, которые позволяют точно указать место записи.
В этой статье мы расскажем, как добавить строку в середину текста в ОС Linux.
Содержание:
Использование утилиты sed
Утилита sed (от англ. stream editor) — инструмент командной строки в Linux, предназначенный для обработки и преобразования текста. Команда читает файл построчно и может выполнять такие задачи, как:
- поиск и замена слов;
- вставка или удаление строк;
- изменение текста на основе шаблонов и так далее.
Базовый синтаксис команды sed для вставки текста в определенное место файла выглядит следующим образом:
Где:
N— номер строки;a— опция, указывающая вставить текст после указанной строки;i— опция, указывающая вставить текст перед указанной строкой;<Text to insert>— текст.
Читайте также: Как искать слова в текстовом редакторе Vim / vi.
Также часто в синтаксис добавляют обратный слеш (\) после опции a или i. Он используется в sed, чтобы корректно обрабатывать текст с пробелами или специальными символами:
Вставка текста перед определенной строкой
Для примера попробуем записать в файл example.txt текст перед третьей строкой. Чтобы это сделать, выполним в терминале:
Важно: предыдущая команда не внесла каких-либо изменений в сам файл, а просто вывела отредактированное содержимое в стандартный вывод.
Если Вам нужно напрямую записать новую строку в файл, добавьте к команде sed опцию -i:
Читайте также: Опции контекста команды grep в Linux.
Вставка текста после определенной строкой
Соответственно, чтобы записать текст после какой-либо строки, воспользуемся следующей командой:
Использование утилиты awk
Инструмент awk — утилита командной строки в Linux, применяемая для обработки текста, сканирования шаблонов и создания отчетов. Он особенно полезен для работы со структурированными текстовыми файлами, такими как CSV, журналами или таблицами.
Синтаксис awk для вставки текста после какой-либо строки выглядит следующим образом:
Где:
NR==<line number>— часть команды, которая проверяет, совпадает ли номер текущей строки с номером целевой строки;{ print; print "New line to insert"; next }— печатает исходную строку, затем указанный текст, после чего переходит к следующей строке;{ print }— выводит все остальные строки обычным образом.
Синтаксис awk для вставки текста перед какой-либо строкой имеет такой вид:
Где:
NR==<line number>— проверяет, совпадает ли номер текущей строки с номером целевой строки;{ print "New line to insert" }— выводит указанный текст перед целевой строкой;{ print }— печатает целевую строку.
Читайте также: Введение в AWK: руководство для начинающих.
Вставка текста перед и после определенной строки
В качестве примера попробуем для начала записать нужный текст перед третьей строкой с помощью awk:
Чтобы вставить текст после третье строки, выполним в терминале:
Внесение изменений в текущий файл
Важно отметить, что утилита awk по умолчанию выводит результат в стандартный вывод. Если Вы хотите записать изменения напрямую в файл, используйте следующую конструкцию:
Где:
'...'— часть команды, содержащая логику вставки текста до или после нужных строк;> tmp— перенаправление вывода: результат работыawkсохраняется во временный файлtmp;mv tmp input.txt— заменяет оригинальный файл на обновленную версию, перемещая временный файлtmpобратно в исходный текстовый документ.
Например:
Читайте также: Как использовать перенаправление ввода / вывода в Linux.
Выводы
Мы показали, как вставлять строки в середину текста в ОС Linux. Для решения этой задачи Вы можете использовать как утилиту sed, так и awk.
Спасибо за время, уделенное прочтению статьи!
Если возникли вопросы — задавайте их в комментариях.
Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!
Чтобы знать больше и выделяться знаниями среди толпы 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.































