Passa uma variável em outra variável dentro de um awk [duplicado]

0

Eu tenho as variáveis abaixo:

grep_line_new_file='create table "informix".issue'
new_file_below='awk 'BEGIN { FS="\n[()]"; RS=";" } /$grep_line_new_file/ { print ")"$NF";"}' test'

Dentro do arquivo de teste, eu tenho o seguinte:

create table "informix".issue 
(
issue_no serial not null constraint "informix".nnc_issue00,
user_logged varchar(8,1) not null constraint "informix".nnc_issue01,
issue_status_code integer not null constraint "informix".nnc_issue02,
issue_cat_code varchar(2) not null constraint "informix".nnc_issue03,
issue_descr text not null constraint "informix".nnc_issue04,
issue_feedback text,
user_action varchar(8,1),
date_logged date not null constraint "informix".nnc_issue05,
date_compl date
) in datadbs extent size 16 next size 16 lock mode row;

revoke all on "informix".issue from "public" as "informix";

Estou tendo um problema ao usar uma variável externa para encontrar e obter a linha abaixo que preciso ao ecoar o "$ new_file_below".

Eu tentei usar o abaixo [awk -v]. Ainda não quer trabalhar:

new_file_below='awk -v val="$grep_line_new_file" 'BEGIN { FS="\n[()]"; RS=";" } /$val/ { print ")"$NF";"}' test'

O resultado que eu preciso da variável "new_file_below" está abaixo:

) in datadbs extent size 16 next size 16 lock mode row;
    
por Christopher Karsten 15.05.2017 / 13:21

1 resposta

0

Eu descobri como passar uma variável em um padrão dentro de uma variável dentro de um awk:

grep_line_new_file='create table "informix".issue'
new_file_below='awk 'BEGIN { FS="\n[()]"; RS=";" } /'"$grep_line_new_file"'/ { print ")"$NF";"}' test'

saída:

create table "informix".issue
) in datadbs extent size 16 next size 16 lock mode row;
    
por 15.05.2017 / 13:57

Tags