Используйте список строк, чтобы заменить параметр 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 

  • Как удалить пробелы из строки после заданного слова?
  • Сценарий Bash - части chomp из строки
  • Как заставить оператор SQL отображать, сколько строк оно подсчитало до сих пор?
  • Можно ли использовать sed для генерации файла нагрузки для таблицы фактов поиска даты?
  • Введите ключ возврата в SQL-скрипт
  • Присвоение строковой переменной из SQL-запроса переменной оболочки
  • как разделить буферизацию на меньшие файлы csv
  • Как распечатать CSV / таблицу из результатов SQuirreL?
  • 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

    Как кошка знает скорость передачи в последовательном порту?

    Переменная, случайным образом выбранная из трех чисел (10, 100 и 1000)

    NFS-сервер мгновенно отключил соединение, теперь df, ls и umount все зависают

    Почему перехват системных вызовов дает разные результаты каждый раз в Linux / Android 2.6.29?

    перемещать файл по списку в файл (с ведущими пробелами)

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

    Есть ли какой-либо инструмент, который показывает живые изменения ко всем файлам в папке журнала?

    Как я могу заставить свою Linux-систему широковещать свой IP-адрес динамически?

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

    Автоматическая копия нового ядра для `/ boot / efi` при обновлении ядра

    Где найти активный сервер репозитория бутстрапов?

    «Каталог исходного кода ядра Linux», запрошенный в Cisco VPN client install

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

    Как добавить каталог изменений и git pull к этой линии crontab?

    Удалить команду dig в centos 6?

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