Как заменить строку в файле другим файлом?

У меня есть несколько файлов, которые содержат строку. Эта строка должна быть заменена всем содержимым другого файла (который может быть многострочным). Как я могу это сделать?

Мне нужно что-то вроде sed -i 's/string/filename/' * где filename является фактическим файлом, а не строкой «filename».

Дополнительная информация: Файл может содержать специальные символы, такие как / или \ или | или [ или ] .

3 Solutions collect form web for “Как заменить строку в файле другим файлом?”

bash хорошо работает для этого:

 $ cat replace foo/bar\baz the second line $ cat file the replacement string goes >>here<< $ repl=$(<replace) $ str="here" $ while IFS= read -r line; do echo "${line//$str/$repl}" done < file 
 the replacement string goes >>foo/bar\baz the second line<< 

Awk будет работать, за исключением того, что он будет интерпретировать escape-обратные экраны (the \b в моем примере)

 $ awk -v string="here" -v replacement="$(<replace)" ' {gsub(string, replacement); print} ' file the replacement string goes >>foo/baaz the second line<< 

Вам нужна недоработанная команда sed r, которая читает файл:

 sed -i '/string/{r filename d}' 

Я предполагаю, что вы хотите заменить всю строку, иначе замените d на что-то подходящее.

Я получил это для работы:

 $ foo='baz' $ echo "foobarbaz" | sed "s/foo/${foo}/" bazbarbaz 

Сделав этот шаг дальше, ваша первая строка будет выглядеть примерно так:

 $ foo=`cat filename` 

Предполагается, что вы знаете имя файла до того, как вы достигнете линии, которую нужно заменить, конечно – если вы этого не сделаете, вы должны прочитать строку, получить имя файла, а затем выполнить чтение и замену.

  • Удалите несколько строк после соответствия шаблону, но только после соответствия шаблону
  • Подстановка строк в очень большом файле
  • Как заменить новую строку на sed?
  • добавить обратную косую черту перед конкретным символом
  • Как сравнить строки в одном файле построчно и добавить вывод в тот же файл
  • Дополнение с 'sed'
  • Escape> ');} </ in sed
  • Как я могу исключить строки, которые соответствуют шаблонам диапазона в sed?
  • Как найти и заменить шаблон ВНУТРИ конкретного шаблона с помощью sed
  • Как выполнить многострочный grep
  • Разделите базовое имя файла, сохраните часть каталога
  • Interesting Posts

    Можно ли поставить оператор if в операторы If так?

    Сколько оперативной памяти, дискового пространства и времени процессора используется скриптом

    Использование файла интерфейса с утилитой LP и txt2pdf для преобразования файла печати в PDF

    Как проверить контрольную сумму с помощью одной командной строки?

    Почему GNU обнаруживает подавление печати – справочные каталоги при применении другого теста «-или»?

    Какие специальные символы приглашения для поддержки busbox для busybox?

    Как подключить диск UFS в режиме чтения-записи?

    Захват символической ссылки в переменные Unix / Linux

    Perl не-жадное регулярное выражение больше, чем должно

    Установка ручного тормоза на сервере Debian – Wheezy

    Минимальная командная строка Distro

    Шифрование мультимедийных файлов с помощью GPG

    Удаление пустого файла, почему так много вызовов sys?

    Проблема установки Kali UUID

    Как можно вычесть 2 поплавки, которые были извлечены из 2 других файлов с помощью BASH

    Linux и Unix - лучшая ОС в мире.