组合制表符分隔的行

时间:2016-08-21 10:38:39

标签: bash macos sorting combiners

我已经在蛋白质数据中对所有行进行了数字排序,我现在需要以某种方式组合相同数字的行,以便将新信息添加到上一行:

当我以数字方式对所有行进行排序时,我需要以某种方式组合具有相同数字的行,以便将新信息添加到上面的行。比如没有61的行:

:Col | :1 | :2 | :3 | :4 | :5 | :6 | :7 | :8 | :9 | :10 | :11
:---- | :61 | :PTS ... cyt 1bl .. 0,38 MONOMER homo-trimer FRUC ... PER ... Bac ..       61 PTS ...... 3

变为:

Col 1 2 3 4 5 6 7 8 9 10 11       61 PTS ... cyt 1bl .. 0,38 MONOMER homo-trimer FRUC ... PER ... Bac .. 3

有时在上面的某些列中会缺少信息,这些信息位于较低的列中。因此,加入的顺序必须简洁。

如果这两行中的信息都可行吗?

该文件在这里有1021行

https://www.dropbox.com/s/yuu46crp7ql4z65/Proteins_num.txt?dl=0

1 个答案:

答案 0 :(得分:0)

awk / gawk解决方案可能是:

gawk '
  BEGIN { SEQ="" }; 
  $1 == SEQ { $1=""; printf("%s\t",$0)}; 
  $1 != SEQ { SEQ=$1;  printf("\n%s",$0);}
' Proteins_num.txt

其中SEQ是行首的数字。当它检测到编号变化时,用回车打印最后一行。如果未检测到任何更改,则打印行没有断行,以与下一行连接。文件必须先进行数字排序。