1
所以我有這樣awk來瞰引號
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中執行。但是這顯然是行不通的,因爲第三行的引號應該像(..) 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)
和它不工作。
有人可以給我一個快速的出路嗎?