Добавить строку в файл linux
Обновлено: 21.11.2024
Существует несколько способов добавления текста в файлы в системах Linux без открытия редактора, например команды echo и printf. С другой стороны, когда вам нужно добавить МНОГО текста, используемый вами метод может сделать работу утомительной или легкой.
В этом посте описаны некоторые команды, которые вы можете использовать, а также возможные проблемы и преимущества.
Эхо-команды добавляют строки текста к существующим файлам простым способом:
Вы также можете использовать команду printf для добавления текста, но имейте в виду, что по умолчанию она не добавит новую строку, как если бы вы нажали клавишу Enter. Используйте подобную команду с \n, чтобы включить его:
Если вы хотите создать скрипт, который добавит в файл последовательность строк, только что показанные методы echo и printf могут немного утомить. Один из вариантов — добавить несколько строк с помощью одной команды echo или printf, которая включает такие символы новой строки:
Опция -e заставляет команду echo интерпретировать последовательности \n как новые строки, поэтому ваш файл будет включать следующие строки:
Вы также можете просто вводить каждую строку отдельно, если вы не заканчиваете цитату до конца текста. Этот тип многострочного эха требует, чтобы вы начинали свою команду echo в одной строке с открывающей двойной кавычкой ("), добавляли строки без кавычек, а затем закрывали команду echo в последней строке закрывающей двойной кавычкой. Вот пример выполнения этого в командной строке:
Однако, если вы хотите добавить большой объем текста, даже приведенная выше многострочная команда echo может потребовать больше усилий, чем она того стоит. Два других варианта: 1) поместить текст в отдельный файл и добавить содержимое этого файла к файлу, который вы обновляете, и 2) добавить текст с помощью скрипта.
Добавление текста с помощью отдельного файла
Чтобы добавить текст из одного файла в конец другого, можно сначала создать добавляемый файл. Вот пример добавления отказа от гарантии в конец файла с подробным описанием продукта:
После того, как текстовый файл будет готов, выполните команду, подобную этой, чтобы добавить его:
В этом и предыдущих примерах нужно быть осторожным, чтобы не перезаписать целевой файл с помощью одного ">".
Добавление текста с помощью скрипта
Еще один вариант — добавить строки с помощью скрипта. Для этого вы можете использовать многострочную команду эха, подобную одной из показанных выше.
Приведенный ниже пример скрипта использует эту технику для добавления сведений о гарантии в любой файл, предоставленный в качестве аргумента скрипта или предоставленный в приглашении:
Если у вас есть файл, который заканчивается так:
Вы можете добавить отказ от ответственности следующим образом:
Проверьте дополнительные строки следующим образом:
Одним из преимуществ такого подхода является то, что вы можете легко вставлять свой текст в скрипт без добавления команд. Просто поместите его между первым эхом и строкой перенаправления.
Обратите внимание, что показанный выше сценарий включает проверку того, было ли указано имя файла, и, если нет, запрашивает его. Он также проверяет, существует ли указанный файл.
Подобные скрипты — хороший вариант, когда вам нужно добавить строки текста к большому количеству файлов.
Подведение итогов
Существует множество способов добавления текста в файлы в Linux, но для добавления большого количества строк сценарий, вероятно, является одним из лучших вариантов, особенно если вам нужно делать это неоднократно. Вы можете использовать скрипт, который включает команду многострочного эха, как описано выше, для добавления любого количества текста в файлы.
Присоединяйтесь к сообществам Network World на Facebook и LinkedIn, чтобы комментировать самые важные темы.
Сандра Генри-Стокер занимается администрированием систем Unix более 30 лет. Она описывает себя как «USL» (Unix как второй язык), но помнит достаточно английского, чтобы писать книги и покупать продукты. Она живет в горах в Вирджинии, где, когда не работает с Unix и не пишет о ней, отгоняет медведей от своих кормушек для птиц.
При работе с файлами конфигурации в Linux иногда необходимо добавить текст, например параметры конфигурации, в существующий файл. Добавить просто означает добавить текст в конец или конец файла.
В этой короткой статье вы узнаете о различных способах добавления текста в конец файла в Linux.
Добавить текст с помощью оператора >>
Оператор >> перенаправляет вывод в файл, если файл не существует, он создается, но если он существует, вывод будет добавлен в конец файла.
Например, вы можете использовать команду echo для добавления текста в конец файла, как показано на рисунке.
В качестве альтернативы вы можете использовать команду printf (не забудьте использовать символ \n для добавления следующей строки).
Вы также можете использовать команду cat, чтобы объединить текст из одного или нескольких файлов и добавить его в другой файл.
В следующем примере дополнительные общие ресурсы файловой системы, добавляемые в файл конфигурации /etc/exports, добавляются в текстовый файл с именем share.txt.
Кроме того, вы также можете использовать следующий здесь документ, чтобы добавить текст конфигурации в конец файла, как показано.
Внимание: не путайте оператор перенаправления > с >> ; использование > с существующим файлом удалит содержимое этого файла, а затем перезапишет его. Это может привести к потере данных.
Добавить текст с помощью команды tee
Команда tee копирует текст из стандартного ввода и вставляет/записывает его в стандартный вывод и файлы. Вы можете использовать его флаг -a для добавления текста в конец файла, как показано.
Вы также можете использовать здесь документ с командой tee.
Вам также могут быть интересны эти связанные статьи.
Вот оно! Вы узнали, как добавить текст в конец файла в Linux. Если у вас есть вопросы или мысли, которыми вы хотите поделиться, свяжитесь с нами через форму обратной связи ниже.
Если вам понравилась эта статья, подпишитесь на уведомления по электронной почте о руководствах по Linux. Если у вас есть вопросы или сомнения? обратитесь за помощью в разделе комментариев.
Если вы цените то, что мы делаем здесь, в TecMint, вам следует подумать о следующем:
TecMint – это самый быстрорастущий и пользующийся наибольшим доверием сайт сообщества, где можно найти любые статьи, руководства и книги по Linux в Интернете. Миллионы людей посещают TecMint! для поиска или просмотра тысяч опубликованных статей, доступных всем БЕСПЛАТНО.
Если вам нравится то, что вы читаете, купите нам кофе (или 2) в знак признательности.
Мы благодарны за вашу бесконечную поддержку.
Похожие записи
4 мысли о «Как добавить текст в конец файла в Linux»
Почти невозможно читать и концентрироваться на статье со всеми вашими объявлениями.
Я понимаю ваши опасения, но реклама — это единственный способ поддерживать работу этого сайта, платить нашим авторам и кормить мою семью…
Надеюсь, вы понимаете, что реклама размещается правильно, не влияя на навигацию пользователя. Если вам все еще трудно читать, свяжитесь со мной здесь [email protected] .
Это очень грубый и неуместный ответ, Рави, особенно если он исходит от мода или владельца веб-сайта.
Вполне можно было бы сказать:
посмотрим, сможем ли мы изменить порядок рекламы или разместить рекламу в каких-то других местах, а не в основной части статьи, возможно, в конце каждого чтение. Научитесь быть более вежливым, отвечая своим читателям.
Извини, братан, если мое сообщение задело тебя. Я постараюсь изменить порядок размещения рекламы в теле статьи, как вы предложили..
Есть что сказать? Присоединяйтесь к обсуждению. Отменить ответ
Этот сайт использует Akismet для уменьшения количества спама. Узнайте, как обрабатываются данные ваших комментариев.
Это вторая статья из серии "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. Итак, следите за обновлениями. Конечно, не забудьте поделиться своими отзывами в разделе комментариев ниже.
Я пишу скрипт bash для поиска файла, если он не существует, затем создаю его и добавляю к нему это:
Итак, "строка, затем новая строка, вкладка, затем текст", я думаю, что это чувствительный формат. Я знаю, что ты можешь это сделать:
Но это кажется странным, так как это две строки. Есть ли способ добавить это в этот формат:
10 ответов 10
Если для записи в файл требуется sudo (другие права пользователя), используйте это:
@ott-- Вам не нужна настоящая подоболочка (т.е. можно сохранить один новый процесс), этого достаточно: < echo "line 1" ; эхо "строка 2"; >>>приветствие.txt
Или, если вам нужна буквальная вкладка (а не четыре пробела в вашем вопросе):
Вы можете добиться того же эффекта с помощью echo , но именно то, как именно это зависит от реализации, тогда как printf постоянен.
Еще один подход — использовать тройник
Несколько строк выбора из справочной страницы tee:
Утилита tee копирует стандартный ввод в стандартный вывод, создавая копии в 0 или более файлах.
-a – добавлять вывод в файлы, а не перезаписывать их.
Вот пример добавления нескольких строк в файл:
SED может добавить строку в конец файла следующим образом:
sed -i '$ текст для вставки' имя_файла.file
$ выбирает конец файла, a говорит ему добавить, и после этого идет текст, который должен быть вставлен. Затем, конечно, имя файла.
Есть ли у этого подхода дополнительные преимущества по сравнению с другими решениями?
Да, у этого подхода есть дополнительное преимущество, заключающееся в добавлении к любым файлам, возвращаемым при поиске, например: find . -name "*.html" -exec sed -i '$ a ' <> \;
Я использовал приведенный выше пример, чтобы вставить конечный HTML-тег, который отсутствовал на каждой HTML-странице в нескольких каталогах.
Читайте также: