如何在linux中更改文本顺序?

时间:2017-01-24 03:10:18

标签: linux

在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 ;

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

注意:这假设所有三条记录的缩进都相同。