如何将特定列向上移动一行?

时间:2015-09-24 11:48:43

标签: bash shell awk

我有以下文本文件:

 ...                .....               .....              .......

 Ca28               0.97222484          7.48500210         18.99362895

 Ca30               1.78544464          4.99000140          3.81528863

 Ca32               7.93680381          4.99000140          9.88662475

 Co1                1.67818190          3.65539564         25.52346192

 Co2                1.67818190          8.64539704         25.52346192

 C2                 5.91285159          2.49500070          9.88662475

 O2                 6.70274792          1.85423438         10.66624532

 O4                 4.75829822          1.85423438         16.73758145

 ..                 .....               ....               ....

我想知道如何移动awk第一列的第一列来获取:

 ... 
           .....               .....              .......

 Ca28
           0.97222484          7.48500210         18.99362895

 Ca30  
           1.78544464          4.99000140          3.81528863

 Ca32   
           7.93680381          4.99000140          9.88662475

 Co1  
           1.67818190          3.65539564         25.52346192

 Co2
           1.67818190          8.64539704         25.52346192

 C2     
           5.91285159          2.49500070          9.88662475

 O2     
           6.70274792          1.85423438         10.66624532

 O4        
           4.75829822          1.85423438         16.73758145
 ..   
           .....               ....               ....

之前我问过与awk 'NR%2!=0{prev=$0;next} {print prev, $0}' file做反向,但现在我不知道如何用相同的代码做到这一点。

有什么建议吗?

提前谢谢

1 个答案:

答案 0 :(得分:2)

您可以使用此awk

awk '{ $1 = $1 RS }1' yourfile

<强>解释

RS - 记录分隔符。 \n是awk默认值。

1 - 打印$0(整行)