だから私は次のようなファイルを持っています
select * from tb where start_date = to_date('20131010','yyyymmdd');
p23 VARCHAR2(300):='something something
still part of something above with 'this' between single quotes and close
something to end';
(code goes on)
これは、sqlplus 経由で実行できる自動生成コードです。しかし、3 行目では引用符を のようにエスケープする必要があるため、これは明らかに機能しません(..) with ''this'' between (...)
。
そのコードを生成したスクリプトにアクセスできませんが、仕事をするために awk を取得しようとしていました。スクリプトは、コード内のすべての引用符をエスケープしないように十分にスマートにする必要があることに注意してください (to_date('20131010','yyyymmdd')
正しいです)。
私は awk の専門家ではないので、次のようにしました。
BEGIN {
RS=";"
FS="\n"
}
/\tp[0-9]+/{
ini = match($0, "\tp[0-9]+")
fim = match($0, ":='")
s = substr($0,ini,fim+1)
txt = substr($0, fim+3, length($0))
block = substr(txt, 0, length(txt)-1)
print gensub("'", "''", block)
}
!/\tp[0-9]+/{
print $0";"
}
しかし、それはあまりにも面倒で、print gensub("'", "''", block)
機能していません。
誰かが私に簡単な方法を教えてもらえますか?