2016-08-21 10 views
0

У меня есть все строки в proteins_num сортируются численно, теперь мне нужно объединить строки с одинаковым номером в пути, так что новая информация добавляется в верхнюю строку:Объединения строк, которые табуляция

Когда я сортировал все строки численно, мне нужно комбинировать строки с одинаковым номером таким образом, чтобы новая информация добавлялась в верхнюю строку. Возьмите, например, линии без 61:

: Col | : 1 | : 2 | : 3 | : 4 | : 5 | : 6 | : 7 | : 8 | : 9 | : 10 | : 11
: ---- | : 61 | : PTS ... цит 1BL .. 0,38 МОНОМЕР гомо-тример FRUC ... ПЕР ... 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

Это должно быть легко с Awk. Что вы пробовали, и как это случилось? – tripleee

+0

Я посмотрел на это: http: //unix.stackexchange.com/questions/193748/join-lines-of-text-with-repeated-beginning, но будучи новичком в программировании, кажется, очень сложно, и я не необходимо объединить его сразу после друг друга, потому что порядок информации должен находиться в правой колонке (я просто разъясню выше в редактировании). – Ditte

+0

Также, что происходит, когда у вас есть два разных значения в столбце 2 для одного значения в столбце 1? – anishsane

ответ

0

Раствор/простак AWK может быть:

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

где SEQ это номер в начале строки. Когда он обнаруживает изменение нумерации, распечатайте последнюю строку с возвратом каретки. Если изменения не обнаружены, строка печатается без строки прерывания, чтобы присоединиться к следующей строке. Файл должен быть отсортирован ранее.