Самый простой способ найти / заменить в файле с помощью списка?

У меня есть файл, foo.txt и регулярное выражение, которое я хочу найти в этом файле. Каждый раз, когда я нахожу regexp, я хочу взять строку из другого файла bar.txt и подставить его для соответствия регулярного выражения, которое я нашел в foo.txt. В основном я хочу найти / заменить, но каждый раз, когда я заменяю, я хочу, чтобы следующий текст замены приходил со следующей строки в bar.txt.

Есть ли простая магия оболочки для этого?

2 Solutions collect form web for “Самый простой способ найти / заменить в файле с помощью списка?”

Если я правильно понимаю, может быть, что-то вроде:

awk '{getline repl < "second-file"; sub(/regexp/, repl); print}' < first-file 

Или если regexp может появляться несколько раз в строке или нет в каждой строке:

 perl -pe 's/regexp/chomp($r=<STDIN>);$r/ge' first-file < second-file 
 perl -pe ' BEGIN { open IN, "<replacements" or die $!; } s/pattern/ $tmp = <IN>; chomp $tmp; $tmp /xe; ' filename 
  • Как sed заменить этот конец линии?
  • Извлечение нескольких экземпляров текста между двумя словами, включая стартовое слово, но исключающее слово
  • В POSIX sed период (точка) соответствует новой строке в многострочном пространстве шаблонов?
  • Как удалить строки в файле с определенной позиции до конца файла
  • Как я могу извлечь числа в файле с помощью sed или любого другого инструмента?
  • bash - извлекает имена файлов из html-файла, содержащего несколько ссылок
  • Объединение двух частей вместе для создания единого сценария
  • Поведение POSIX привязок sed и $ regex с многострочными пространствами шаблонов
  • array выводит все испорченные?
  • Удалите обе строки, если значения столбца A повторяются в следующей строке
  • Проблема с sed в массиве, содержащем строки, содержащие пробелы
  • Linux и Unix - лучшая ОС в мире.