我需要打印“更新”字样。到';'。
file.txt的:
-- Host (first) kkk (queen1)
-- prince princess#/king 1/1
update schema.table_name t set "A=123","B=234" where "C=222" and "D=333"
and "F=2342";
-- Host (first) ddd (queen2)
-- prince princess#/king 2/2
update schema2.table_name2 t set "A=123","B=234" where "C=222" and "D=333"
and "F=2342";
使用下面的awk,我可以指定要解析的块,但我不确定如何从update更新语句直到semicolon()。
file.awk:
BEGIN {
}
/-- Host/,/;/ {
if (/-- Host/) printf "%s#%s#",$3,$5;
if (/update /) printf ??????????????;
}
END {
}
这就是我执行它的方式:
awk -f file.awk -F'[ ()]+' file.txt
你能告诉我任何想法吗?
答案 0 :(得分:1)
我猜您的问题是,update...
行分为多行。这个单行可能会帮助你。但是,您可能需要稍微调整一下以适合您的整个脚本。
awk 'p||/^update/{p=1;printf "%s",$0}/;$/&&p{p=0;print ""}' file
以您的文件作为输入,输出:
update schema.table_name t set "A=123","B=234" where "C=222" and "D=333"and "F=2342";
update schema2.table_name2 t set "A=123","B=234" where "C=222" and "D=333"and "F=2342";
答案 1 :(得分:0)
awk惯用的方法是
awk '/update/,/;/' file.txt