Bash вставить строку в файл в определенном месте

Обновлено: 22.11.2024

Иногда нам нужно работать с файлом для целей программирования, и новую строку требуется добавить в конец файла. Эту задачу добавления можно выполнить с помощью команд «echo» и «tee». Использование «>>» с командой «echo» добавляет строку в файл. Другой способ — использовать команды «echo», «pipe(|)» и «tee» для добавления содержимого в файл. Как эти команды можно использовать в сценарии bash, показано в этой статье.

Создайте текстовый файл с именем books.txt со следующим содержимым, чтобы выполнить примеры, показанные в следующей части этой статьи.

книги.txt:

Пример 1: добавить строку в файл с помощью команды «echo» и символа «>>»

В следующем скрипте существующий файл books.txt назначается переменной, имени файла и строковому значению, которое пользователь вводит в качестве входных данных для добавления в конец файла. Если входное значение не пустое, команда «echo» добавит значение в файл books.txt, используя символ «>>».

Вывод:

«Learning JQuery» воспринимается как новое текстовое значение в выходных данных, которое добавляется в конец файла.

Пример 2. Добавление строки в файл с помощью команды «printf» и символа «>>»

Символ «>>» можно использовать с командой «printf» для добавления форматированного содержимого в файл. Как и в предыдущем примере, имя файла и строковые значения присваиваются переменным, имени файла и новому тексту. Затем команда «printf» перенаправит значение newtext с другим текстом в конец файла books.txt.

Вывод:

«Веб-сайт от WordPress» воспринимается как новое текстовое значение в выходных данных, которое добавляется в конце файла.

Пример 3: добавить строку в файл с помощью команды `tee`

tee — еще одна полезная команда для добавления любой строки в файл. В следующем скрипте имя файла и новые текстовые значения назначаются так же, как и в предыдущих примерах. Если текстовое значение не пусто, то команда «echo» отправит значение команде «tee» с помощью символа «|». Параметр «-a» используется здесь с командой «tee», чтобы добавить полученное входное значение в файл books.txt. ‘/dev/null’ используется в скрипте для предотвращения отображения вывода в терминале.

Вывод:

«Изучение CSS3» воспринимается как новое текстовое значение в выводе, которое добавляется в конец файла.

Вывод:

В этой статье показаны три различных способа добавления текста в конец файла с помощью сценария bash.

Об авторе

Фахмида Есмин

Я веду курсы веб-программирования. Мне нравится писать статьи или учебные пособия на различные темы в области ИТ. У меня есть канал на YouTube, на котором публикуются различные учебные пособия по Ubuntu, Windows, Word, Excel, WordPress, Magento, Laravel и т. д.: Справка Tutorials4u.

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

Прежде чем мы перейдем непосредственно к основному содержанию, каждый учащийся должен знать, что такое sed. Вот краткое введение в Super sed :

  • sed означает Stream EDitor, и, поскольку он основан на редакторе ed, он заимствует большинство команд из ed . Он был разработан Ли Э. МакМахоном из Bell Labs.
  • sed предлагает широкий спектр текстовых преобразований, включая печать строк, удаление строк, редактирование строки на месте, поиск и замену, добавление и вставку строк и т. д.
  • sed полезен, когда вам нужно выполнить стандартные операции редактирования нескольких строк без использования редактора 'vi'.
  • Всякий раз, когда sed выполняется для входного файла или содержимого из стандартного ввода, sed считывает файл построчно и после удаления завершающей новой строки помещает его в «пространство шаблона», где над ними выполняются команды. после того, как условия (как в случае сопоставления регулярных выражений) проверяются, а затем выводятся на стандартный вывод.
  1. Команда sed "a" позволяет нам добавлять строки в файл на основе предоставленного номера строки или регулярного выражения. Таким образом, строки будут добавлены в файл ПОСЛЕ строки, в которой выполняется условие.
  2. Команда sed "i" позволяет нам вставлять строки в файл на основе предоставленного номера строки или регулярного выражения. Таким образом, строки будут добавлены в файл В месте совпадения номера строки или ПЕРЕД строкой соответствия шаблону.
  3. sed с опцией -i будет редактировать файл на месте, т.е.если вы не используете опцию -i, изменения не будут записаны в файл. (объяснено в следующем разделе)

sed — Добавление строк в файл

Для лучшего понимания пусть у нас будет файл sedtest.txt со следующим содержимым:

1. Добавить строку после 'N-й строки

Это добавит строку после N-й строки в FILE.txt.

В то время как, чтобы добавить строку после последней строки,

Если вы запустите приведенные выше команды и просмотрите файл sedtest.txt, вы обнаружите, что исходное содержимое этого файла не изменится. Если вы хотите добавить строки в файл и сохранить изменения (т. е. отредактировать файл на месте), вам придется использовать параметр -i .

Давайте проверим последнюю выполненную нами команду для добавления строк после последней строки файла. Внес ли он какие-либо изменения в файл?

Нет, исходный файл остается прежним. Но я хотел сохранить изменения в файле. Итак, я должен был использовать опцию -i .

Да, теперь изменения записываются в файл. Просто запомните это.

2. Добавить строку с помощью регулярного выражения/шаблона

Это добавит строку после строки, в которой найдено совпадение с образцом.

sed — Вставка строк в файл

1. Вставить строку, используя номер строки

Это вставит строку перед строкой с номером строки 'N'.

В то время как, чтобы вставить строку перед последней строкой,

2. Вставка строк с помощью регулярного выражения

Эта строка будет вставлена ​​перед каждой строкой, в которой найдено совпадение с образцом.

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

Читайте также: