将成对的行排列成单行

时间:2014-07-07 03:46:16

标签: awk

我有一个像这样的文本文件。

4IGL    A   1488
4IGL    B   690
4IU2    A   212
4IU2    B   243
4IYP    B   222
4IYP    C   151

我想将行对排列成单行。我怎么能用awk做到这一点?

期望的输出

4IGL    A   1488    B   690
4IU2    A   212     B   243
4IYP    B   222     C   151  

2 个答案:

答案 0 :(得分:1)

这应该这样做:

awk 'NR%2==1 {line=$0; next} {printf("%-20s%-4s%s\n", line, $2, $3)}' file

这假设线条与第一个字段成对出现,如您所示,并且没有空行。

答案 1 :(得分:0)

使用sed:

 sed -n 'N;s/\r*\n[^ ]* / /p' input

给出:

4IGL    A   1488   B   690
4IU2    A   212   B   243
4IYP    B   222   C   151

您可以添加列命令以获得更好的外观:

 sed -n 'N;s/\r*\n[^ ]* / /p' input | column -t

生产:

4IGL  A  1488  B  690
4IU2  A  212   B  243
4IYP  B  222   C  151