Замените строку содержимым файла с помощью sed

У меня есть два разных файла:

File1

/home/user1/ /home/user2/bin /home/user1/a/b/c 

File2

 <TEXT1> <TEXT2> 

Я хочу заменить <TEXT1> File2 на содержимое File1 с помощью sed . Я пробовал эту команду, но не получал надлежащего вывода:

 cat File2|sed "s/<TEXT1>/$(cat File1|sed 's/\//\\\//g'|sed 's/$/\\n/g'|tr -d "\n")/g" 

Вы также можете использовать другие инструменты для решения этой проблемы.

3 Solutions collect form web for “Замените строку содержимым файла с помощью sed”

Вот решение сценария sed (проще в глазах, чем пытаться вставить его в одну строку в командной строке):

 /<TEXT1>/ { r File1 d } 

Запуск:

 $ sed -f script.sed File2 /home/user1/ /home/user2/bin /home/user1/a/b/c <TEXT2> 

Долгое время я нашел это решение, используя замену var. Все решения sed не работали для меня, поскольку они либо удаляют полные строки, либо заменяют неправильно.

 FILE2=$(<file2) FILE1=$(<file1) echo "${FILE2//TEXT1/$FILE1}" 

Заменяет все вхождения TEXT1 в файле2 на содержимое файла1. Все остальные тексты остаются нетронутыми.

Я отвечаю, потому что метод diff / patch может быть интересен в некоторых случаях. Чтобы определить замену строк, содержащихся в файле blob1 строками, содержащимися в blob2 используйте:

 diff -u blob1 blob2 > patch-file 

Например, если blob1 содержит:

 hello you 

и blob2 содержит:

 be welcome here 

сгенерированный patch-file будет:

 --- blob1 2011-09-08 16:42:24.000000000 +0200 +++ blob2 2011-09-08 16:50:48.000000000 +0200 @@ -1,2 +1,3 @@ -hello -you +be +welcome +here 

Теперь вы можете применить этот патч к любому другому файлу:

 patch somefile patch-file 

Он заменит hello , you строки, be , welcome , here строки в somefile .

  • сценарий оболочки для извлечения символов
  • заменяя точку символом с помощью sed или perl
  • Как grep между словами в журнале?
  • Как добавить свойства в конце двух первых строк с двойной кавычкой?
  • замените пустое значение на предыдущее значение первого столбца, используя awk и sed
  • Получение ошибки RE: операнд-оператор повторения недействителен в osx sed
  • unix: заменить один полный столбец в одном файле одним значением из другого файла
  • рассчитать числа на конец и слить в одну строку
  • От файла gpx до csv
  • Как я могу отфильтровать эти «Permission denied» из вывода вывода?
  • sed string для точного соответствия, содержащего /
  • Interesting Posts

    Передача переменной из одного сценария в другой

    удалить файлы журналов

    Фильтр одиночного чтения csv на основе значений 1-го столбца

    Подождите, пока процесс не вернется из сна

    Как подавить сообщения об ошибках из cp?

    Как узнать последовательность эвакуации, которую посылают мои клавиатуры на терминал?

    как использовать gpg зашифрованные файлы oauth через Python для offlineimap

    Не использовать определенные области памяти из-за ошибок

    Ошибка Grub 15 (файл не найден)

    Изменение порта позволяет подключаться к

    Различные сообщения об ошибках при использовании разных строк в терминале

    Сделать Chrome открытым файл md / markdown вместо его загрузки

    Де-обфускация изображения со статистической информацией?

    Как скопировать файл с USB-накопителя в каталог на жестком диске в Centos 6?

    Последняя команда «Linux-терминал» для перезагрузки (поверх ssh) в случае ошибки ядра?

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