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不执行
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不执行
解决方案 »
- 打开ERP ”出现RPC服务器不可用“ 然后设置了又出现“接口不技持”
- curl如何模拟网页表单form-data发送数据
- ubuntu下qt交叉编译环境的配置,为什么交叉编译环境都配好了,使用qt creator生成的可执行文件是x86_64的,不是arm的?
- openvpn配置时候出现问题?
- 如何使用VIM打开深藏在一个子目录中的文件
- 升级到Ubuntu18.04后 vim不能用
- intel的无线网卡AC 9462的驱动程序支持Linux的在哪里下
- 安装LInix Red hat 时,无法进入系统,出现一大串英文,
- Linux tree安装
- 关于deepin版本安装有道翻译
- 求指导cd build camke.. make部分会出错,中间文件也没有在build文件夹生成
- 求教一个makefile生成路径的问题
sed -i '/a where/s/$/)/' sql_file.txt
谢谢,我现在确实是这样做的,但是一行sed语句能不能实现呢?