利用sed或者awk如何处理这段数据,谢谢指点

rabitsky 2016-12-19 05:38:21
大师,有这样一段文本,set后面没有逗号,where后面没有and,不能直接在mysql中执行:

UPDATE `sdypt`.`test1`
SET
id=13
name='jree'
birth='1991:10:26'
WHERE
id=13
name='jree'
birth='2011:11:11';

UPDATE `sdypt`.`test1`
SET
id=12
name='tomkyte'
birth='1989:12:25'
WHERE
id=12
name='tomkyte'
birth='2011:11:11';

UPDATE `sdypt`.`test1`
SET
id=11
name='lucy'
birth='1988:08:10'
WHERE
id=11
name='lucy'
birth='2011:11:11';

UPDATE `sdypt`.`test1`
SET
id=10
name='liup'
birth='1987:07:09'
WHERE
id=10
name='liup'
birth='2011:11:11';

请问如何变成这样格式(在set后面字段加逗号,where后面字段加and 可以在mysql中直接执行):

UPDATE `sdypt`.`test1`
SET
id=13 ,
name='jree' ,
birth='1991:10:26'
WHERE
id=13
and name='jree'
and birth='2011:11:11';

UPDATE `sdypt`.`test1`
SET
id=12 ,
name='tomkyte' ,
birth='1989:12:25'
WHERE
id=12
and name='tomkyte'
and birth='2011:11:11';

UPDATE `sdypt`.`test1`
SET
id=11 ,
name= ,
birth='1988:08:10'
WHERE
id=11
and name='lucy'
and birth='2011:11:11';

UPDATE `sdypt`.`test1`
SET
id=10 ,
name='liup' ,
birth='1987:07:09'
WHERE
id=10
and name='liup'
and birth='2011:11:11';
...全文
281 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
rabitsky 2016-12-23
  • 打赏
  • 举报
回复
害的我研究了3天的sed语法,没人指点效率不高

mysqlbinlog --no-defaults --base64-output=decode-rows -v binlog.000038 --start-position=398 --stop-position=593 > t1.txt
sed -i -n '/###/p' t1.txt
sed -i 's/### //g' t1.txt
sed -i '/^SET$/{:a;N;/@3/!ba;/$/G}' t1.txt
sed -i '/^WHERE$/{:a;N;/\n$/!{$!ba};s/\(WHERE\)\n\(.*\)\n\(SET\)/\3\n\2\n\1/}' t1.txt
sed -i '/^WHERE$/{:a;n;/@3/s/$/;/;t;s/$/ AND/;/@3/!ba}' t1.txt
sed -i '/^SET$/{:a;n;/@3/!{s/$/,/;ba}}' t1.txt
sed -i 's/@1/id/g;s/@2/name/g;s/@3/birth/g' t1.txt
小小nb 2016-12-21
  • 打赏
  • 举报
回复
大师我看不懂啊
rabitsky 2016-12-20
  • 打赏
  • 举报
回复
怎么都没有大师指点一下?

19,612

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧