在linux中的文本文件中有3个更新,我只想更改下面的顺序,sed或awk alse已经尝试过但声音很复杂,也许我可以在记事本中完成它,但任何变通方法只是使用常规在linux中表达?感谢。
原单:
UPDATE `test`.`t1`
SET
id=1 ,
name='daiiy' ,
sex=2 ,
address='guangzhou'
WHERE
id=1 ;
UPDATE `test`.`t2`
SET
id=2 ,
name='tom' ,
sex=1 ,
address='shanghai'
WHERE
id=2 ;
UPDATE `test`.`t3`
SET
id=3 ,
name='liany' ,
sex=2 ,
address='beijing'
WHERE
id=3 ;
如何更改为:
UPDATE `test`.`t3`
SET
id=3 ,
name='liany' ,
sex=2 ,
address='beijing'
WHERE
id=3 ;
UPDATE `test`.`t2`
SET
id=2 ,
name='tom' ,
sex=1 ,
address='shanghai'
WHERE
id=2 ;
UPDATE `test`.`t1`
SET
id=1 ,
name='daiiy' ,
sex=2 ,
address='guangzhou'
WHERE
id=1 ;
答案 0 :(得分:0)
如果您有权访问perl,则可以执行以下操作..
perl -0pe 's/(.*)^(.*)UPDATE(.*);(.*)UPDATE(.*);(.*)UPDATE(.*);(.*)/\2UPDATE\7;\n\n\2UPDATE\5;\n\n\2UPDATE\3;\n\n/s' input.txt
注意:这假设所有三条记录的缩进都相同。