Я пытаюсь написать awk-программу для генерации SQL-запроса, используя вывод команды pipe. Вывод команды будет что-то вроде этогоawk: пытается сгенерировать запрос с помощью awk
Service name: APP1
Service name: APP2
Service name: APP3
Service name: APP4
Service name: APP5
Service name: APP6
Service name: APP7
Service name: APP8
Service name: APP9
и результат мне нужно что-то вроде:
select 'APP1' x from dual union all
select 'APP2' from dual union all
select 'APP3' from dual union all
select 'APP4' from dual union all
select 'APP5' from dual union all
select 'APP6' from dual union all
select 'APP7' from dual union all
select 'APP8' from dual union all
select 'APP9' from dual
Мне нужно, чтобы получить строку после «Имя службы:» строка, положить его между кавычками и поместить его в select. Первая строка должна содержать «x» после строки, а последняя строка не должна содержать объединение всех. В строке не может быть пробела. Поскольку у меня нет большого опыта работы с awk, до сих пор я не мог понять, как это сделать. меня это до сих пор:
srvctl config service -db database | grep 'Service name' | awk 'BEGIN {FS = "[:]"}
{ gsub(/^[ \t]+|[ \t]+$/, "", $2)
if (NR == 1)
{
printf "'select\ \''" $2 "'\'\ x\ from\ dual\ union\ all\ '\n"
}
else
{
printf "'select\ \''" $2 "'\'\ from\ dual\ union\ all\ '\n"
}
}'
Он будет генерировать следующий вывод:
select 'APP1' x from dual union all
select 'APP2' from dual union all
select 'APP3' from dual union all
select 'APP4' from dual union all
select 'APP5' from dual union all
select 'APP6' from dual union all
select 'APP7' from dual union all
select 'APP8' from dual union all
select 'APP9' from dual union all
Любая помощь ценится
Благодаря
Благодаря человек, только что протестировал и, хотя он помещает й псевдоним каждую строку, это не проблема, это работает очень хорошо для меня! – sasteck
Рад, что это сработало. Я также исправил удаление «x» псевдонимов из второй строки и далее. – anubhava
Огромное спасибо! Это было скорее «чистым кодом», оба подхода являются действительными sql sintaxes, спасибо, что нашли время – sasteck