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 считывает файл построчно и после удаления завершающей новой строки помещает его в «пространство шаблона», где над ними выполняются команды. после того, как условия (как в случае сопоставления регулярных выражений) проверяются, а затем выводятся на стандартный вывод.
- Команда sed "a" позволяет нам добавлять строки в файл на основе предоставленного номера строки или регулярного выражения. Таким образом, строки будут добавлены в файл ПОСЛЕ строки, в которой выполняется условие.
- Команда sed "i" позволяет нам вставлять строки в файл на основе предоставленного номера строки или регулярного выражения. Таким образом, строки будут добавлены в файл В месте совпадения номера строки или ПЕРЕД строкой соответствия шаблону.
- sed с опцией -i будет редактировать файл на месте, т.е.если вы не используете опцию -i, изменения не будут записаны в файл. (объяснено в следующем разделе)
sed — Добавление строк в файл
Для лучшего понимания пусть у нас будет файл sedtest.txt со следующим содержимым:
1. Добавить строку после 'N-й строки
Это добавит строку после N-й строки в FILE.txt.
В то время как, чтобы добавить строку после последней строки,
Если вы запустите приведенные выше команды и просмотрите файл sedtest.txt, вы обнаружите, что исходное содержимое этого файла не изменится. Если вы хотите добавить строки в файл и сохранить изменения (т. е. отредактировать файл на месте), вам придется использовать параметр -i .
Давайте проверим последнюю выполненную нами команду для добавления строк после последней строки файла. Внес ли он какие-либо изменения в файл?
Нет, исходный файл остается прежним. Но я хотел сохранить изменения в файле. Итак, я должен был использовать опцию -i .
Да, теперь изменения записываются в файл. Просто запомните это.
2. Добавить строку с помощью регулярного выражения/шаблона
Это добавит строку после строки, в которой найдено совпадение с образцом.
sed — Вставка строк в файл
1. Вставить строку, используя номер строки
Это вставит строку перед строкой с номером строки 'N'.
В то время как, чтобы вставить строку перед последней строкой,
2. Вставка строк с помощью регулярного выражения
Эта строка будет вставлена перед каждой строкой, в которой найдено совпадение с образцом.
Это все, что касается второй статьи о команде sed. Скоро появятся новые статьи о sed. Итак, следите за обновлениями. Конечно, не забудьте поделиться своими отзывами в разделе комментариев ниже.
Читайте также: