sql_file.txt檔案中內容:
select * from t1 as A where 1 = 1
select * from t2 a where 1 =1
select * from t3
select * from t4 A WHERE 1 =1
------------------
我想實作:在有別名a的行中,在a where 后(不區分大小寫,可有多個空格),加上一個過濾條件內容為:
(A.UPD_DATE > (SELECT LAST_CHK_DATE FROM table_xx WHERE sql_code='xx'))
------------------
我腳本中是這么寫的:
${sub_str}=" a where (A.UPD_DATE > (SELECT LAST_CHK_DATE FROM table_xx WHERE sql_code='xx')) and ( "
sed -i "{s/[ ][a,A][ ][ ]*[w,W][h,H][e,E][r,R][e,E][ ]/ ${sub_str} /;s/$/)/}" ${sql_file}
------------------
我的想法是,用sed命令匹配到 a where ,然后將 a where 替換為${sub_str}。
在匹配到a where的基礎上,在行的末尾加上一個右括號 )
------------------
但是,現在問題是,腳本將所有行末尾都加上了右括號!這是不對的,對于t3表不應該加括號。
所以,到底應該怎么實作呢?如何修改sed命令,使得在匹配到a where的基礎上,進行替換,再在行尾添加右括號?
也就是假如這是sed命令: sed /模式匹配1/替換2/添加括號3
當1滿足時,執行23;當1不滿足時,23不執行
uj5u.com熱心網友回復:
我接觸sed命令還沒多久,真得頭好痛啊,希望大家能幫我看看~uj5u.com熱心網友回復:
你把陳述句分開唄sed -i '/a where/s/$/)/' sql_file.txt
uj5u.com熱心網友回復:
謝謝,我現在確實是這樣做的,但是一行sed陳述句能不能實作呢?
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/80333.html
標籤:應用程序開發區
上一篇:Artifactory在Docker的搭建教程(完整版)
下一篇:救救孩子!
