0

我已经按数字排序了 protein_num 中的所有行,我现在需要以某种方式将具有相同数字的行组合起来,以便将新信息添加到上一行:

当我按数字对所有行进行排序后,我需要以某种方式组合具有相同编号的行,以便将新信息添加到上一行。以没有 61 的行为例:

: 科尔 | : 1 | : 2 | : 3 | : 4 | : 5 | : 6 | :7 | : 8 | : 9 | : 10 | : 11
: ----| : 61| :PTS... cyt 1bl.. 0,38 MONOMER 同源三聚体 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 同源三聚体 FRUC... PER...Bac.. 3

有时,在上一行的某些列中会缺少信息,而这些信息在下一行中找到。因此,加入的顺序必须简洁。

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

该文件在这里有 1021 行

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

4

1 回答 1

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 是行首的数字。当它检测到编号更改时,使用回车符打印最后一行。如果未检测到更改,则打印不带断行的行,以与下一行连接。文件必须事先进行数字排序。

于 2016-08-21T14:03:17.453 回答