Вставка строк в середину файла в ОС Linux

Вставка строк в середину файла в ОС Linux

Рубрики:

Linux, Утилиты Linux

Метки:

awk, sed, команды Linux

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

Одна из распространенных задач — добавление новых строк в файл. Записать строку в конец довольно просто. А вот, чтобы вставить ее в середину файла, понадобятся специальные команды, которые позволяют точно указать место записи.

В этой статье мы расскажем, как добавить строку в середину текста в ОС Linux.

Содержание:

  1. Использование утилиты sed
    1. Вставка текста перед определенной строкой
    2. Вставка текста после определенной строкой
  2. Использование утилиты awk
    1. Вставка текста перед и после определенной строки
    2. Внесение изменений в текущий файл
  3. Выводы

Использование утилиты sed

Утилита sed (от англ. stream editor) — инструмент командной строки в Linux, предназначенный для обработки и преобразования текста. Команда читает файл построчно и может выполнять такие задачи, как:

  • поиск и замена слов;
  • вставка или удаление строк;
  • изменение текста на основе шаблонов и так далее.

Базовый синтаксис команды sed для вставки текста в определенное место файла выглядит следующим образом:

 

Где:

  • N — номер строки;
  • a — опция, указывающая вставить текст после указанной строки;
  • i — опция, указывающая вставить текст перед указанной строкой;
  • <Text to insert> — текст.

Читайте также: Как искать слова в текстовом редакторе Vim / vi.

Также часто в синтаксис добавляют обратный слеш (\) после опции a или i. Он используется в sed, чтобы корректно обрабатывать текст с пробелами или специальными символами:

Вставка текста перед определенной строкой

Для примера попробуем записать в файл example.txt текст перед третьей строкой. Чтобы это сделать, выполним в терминале:

 

append before line sed

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

Если Вам нужно напрямую записать новую строку в файл, добавьте к команде sed опцию -i:

 

sed insert line to text

Читайте также: Опции контекста команды grep в Linux.

Вставка текста после определенной строкой

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

 

append after line sed

Использование утилиты 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:

 

append before line awk

Чтобы вставить текст после третье строки, выполним в терминале:

Внесение изменений в текущий файл

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

 

Где:

  • '...' — часть команды, содержащая логику вставки текста до или после нужных строк;
  • > tmp — перенаправление вывода: результат работы awk сохраняется во временный файл tmp;
  • mv tmp input.txt — заменяет оригинальный файл на обновленную версию, перемещая временный файл tmp обратно в исходный текстовый документ.

Например:

 

awk insert line to text

Читайте также: Как использовать перенаправление ввода / вывода в Linux.

Выводы

Мы показали, как вставлять строки в середину текста в ОС Linux. Для решения этой задачи Вы можете использовать как утилиту sed, так и awk.

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

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

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

Чтобы знать больше и выделяться знаниями среди толпы 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

Метки:

awk, sed, команды Linux

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

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

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

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


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