다음과 같은 변수가 있습니다.
grep_line_new_file='create table "informix".issue'
new_file_below=`awk 'BEGIN { FS="\n[()]"; RS=";" } /$grep_line_new_file/ { print ")"$NF";"}' test`
테스트 파일 안에는 다음과 같은 내용이 있습니다.
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";
"$new_file_below"를 에코할 때 외부 변수를 사용하여 아래 줄을 찾고 가져오는 데 문제가 있습니다.
아래에서 [awk -v]를 사용해 보았습니다. 여전히 작동하고 싶지 않습니다.
new_file_below=`awk -v val="$grep_line_new_file" 'BEGIN { FS="\n[()]"; RS=";" } /$val/ { print ")"$NF";"}' test`
다음과 같이 "new_file_below" 변수의 결과가 필요합니다.
) in datadbs extent size 16 next size 16 lock mode row;
답변1
awk의 변수 내에서 패턴으로 변수를 전달하는 방법을 알아냈습니다.
grep_line_new_file='create table "informix".issue'
new_file_below=`awk 'BEGIN { FS="\n[()]"; RS=";" } /'"$grep_line_new_file"'/ { print ")"$NF";"}' test`
산출:
create table "informix".issue
) in datadbs extent size 16 next size 16 lock mode row;