Intereting Posts
Не удалось войти в учетную запись: не удалось открыть сеанс Каковы точки подключения, совместимые с FHS? Объедините две команды в .bash_profile Как узнать путь к определенному файлу в zip-архиве, не извлекая его? Установка ОС из источника на отдельный раздел. Это возможно? Почему мои разделы не отображают нужную емкость на 4096-битном физическом блочном жестком диске? Нужно ли останавливаться, чтобы действительно отключить питание? Используйте logrotate для хранения 7 ежедневных, 4 еженедельных и 12-летних резервных копий db Использование драйвера UART / последовательного порта внутри другого модуля / драйвера Linux Почему это все еще требует установки Java 7? Я не хочу Java 7, могу ли я как-то остановить его от попытки? Есть ли способ иметь NPTv6 с отслеживанием соединений в Linux? Сжатие нескольких файлов в разных папках без структуры папок Могу ли я безопасно удалять старые каталоги в моем домашнем каталоге? Как я могу указать требования OS-условной сборки в файле спецификации RPM? ls цвета для разрешений

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

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

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

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

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