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

Вы можете использовать замену процесса здесь:

mysql --host=<host> --user=<user> --password=<pwd> < <(cat text.txt sql_out.sql)

синтаксис <(...) обрабатывает процесс как файл

1
20.03.2017, 22:01
2 ответа

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

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

другой способ bash:

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-тест онлайн здесь (нажмите кнопку выполнения над кодом)

1
27.01.2020, 23:46
read -d '' -r SQL < script.sql
while IFS= read -r par; do printf '%s\n' "${SQL/\'parameter\'/\'$par\'}"; done < File.txt
0
27.01.2020, 23:46

Теги

Похожие вопросы