Используйте список строк, чтобы заменить параметр sql, распечатывающий весь файл для каждой замены

У меня есть txt-файл со строковыми значениями в одном столбце:

File.txt

 A B . . . Z 

У меня есть sql скрипт с переменной, называемой 'parameter' .

script.sql

 declare @var varchar(255) set @var = 'parameter' select * from table_name where column = @var go 

Я хочу прочитать файл строки за строкой и использовать каждую строку для замены параметра в sql, распечатать все операторы sql в файле (и в конечном итоге запустить этот sql)

Я открыт для использования perl или python , но простое решение оболочки было бы высоко оценено.

Например, что-то вроде: cat file.txt |sed "s/parameter/$0/" script.sql

Ожидаемый результат, например, для A и B :

Новый файл

 declare @var varchar(255) set @var = 'A' select * from table_name where column = @var go declare @var varchar(255) set @var = 'B' select * from table_name where column = @var go 

  • неожиданный EOF при поиске соответствия `) '
  • Преобразование операторов XML в SQL INSERT с использованием командной строки
  • Удаление специальных символов в текстовом файле
  • Можно ли использовать sed для генерации файла нагрузки для таблицы фактов поиска даты?
  • dovecot mysql-connection ошибка из-за специального charater в config
  • Выход прерывается при добавлении вывода sql-запроса в ksh
  • Как читать поля текстового блока?
  • Инструмент для экранирования всех кавычек в строке / файле
  • 2 Solutions collect form web for “Используйте список строк, чтобы заменить параметр sql, распечатывающий весь файл для каждой замены”

    Способ bash с ловушкой для вызова sed каждый раз (применяется штраф за исполнение):

     while read -r line;do sed -r "s/parameter/$line" script.sql >>newfile.sql done <file.txt 

    еще один способ:

     old="$(<script.sql)" while read -r ln;do echo "${old/parameter/$ln}" >>newfile.sql done <file.txt 

    Способ awk:

     awk 'NR==FNR{a[FNR]=$0;last=FNR;next}{for (i=1;i<=last;i++) \ print (a[i] ~ /^set @var/)?gensub(/parameter/,$0,"g",a[i]):a[i] >>"new.sql"}' script.sql file.txt 

    awk test онлайн здесь (нажмите кнопку выполнения над кодом)

     read -d '' -r SQL < script.sql while IFS= read -r par; do printf '%s\n' "${SQL/\'parameter\'/\'$par\'}"; done < File.txt 
    Interesting Posts

    Как я могу заставить TTY использовать соответствующую кодировку?

    команда для создания консольных строк с историей

    Редактирование буфера * закладки * на Emacs

    найти подкаталоги с наименьшим числом

    Завершения работы перестали работать после обновления zsh

    Обертка скрипта оболочки с тройником

    Открытый LDAP предназначен для работы с командой passwd для Linux?

    Как установить несколько экземпляров PHP и настроить для Apache

    Мониторинг того, какая программа вызывает исполняемый файл

    Диагностика системы замерзания или средства визуализации

    Mac OS X LDAP-запрос через dscl дает разные результаты для одного и того же пользователя с одним и тем же источником данных

    Как сохранить файл в ОЗУ

    как мне настроить систему RHEL5 или RHEL6 на использование ldap для аутентификации?

    Почему эта команда awk не играет так же хорошо, как найти sed?

    Как загрузить kali из родного usb

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