У меня большой кусок данных (один файл), как показано ниже, каждая строка имеет разное количество столбцов (разделенных табуляцией), структура данных похожа
это:
>NP_12345.1 matchnumber_1_RKHKK
>NP_56789.2 matchnumber_1_HGRR matchnumber_2_KQRHH matchnumber_3_RVRK matchnumber_4_HTHH
>XP_543421.1 matchnumber_1_RQRH ... matchnumber_m_RVRR
...
В приведенном выше файле 1-я строка содержит 2 столбца, 2-я строка содержит 5 столбцов, а 3-я строка содержит m + 1 столбцов ...; Очевидно, что каждая строка файла имеет "> accessionID" и "matchnumber_i_XXX". Я хочу добавить 1-й столбец каждой строки к заголовку каждого столбца, помеченного "matchnumber" в соответствующей строке, и распечатать в формате fasta, вывод будет выглядеть так:
>NP_12345.1matchnumber_1
RKHKK
>NP_56789.2matchnumber_1
HGRR
>NP_56789.2matchnumber_2
KQRHH
>NP_56789.2matchnumber_3
RVRK
>NP_56789.2matchnumber_4
HTHH
>XP_543421.1matchnumber_1
RQRH
....
>XP_543421.1matchnumber_m
RVRR
...
Кто-нибудь может мне помочь? Заранее спасибо.
Примечание. Например, при наличии файла из одной строки файл "a.txt" содержит только одну строку:
>NP_56789.2 matchnumber_1_HGRR matchnumber_2_KQRHH matchnumber_3_RVRK matchnumber_4_HTHH
Я могу использовать команды piped awk и sed для анализа данных:
cat a.txt |awk -v OFS="\t" '{print $1$2,$1$3,$1$4,$1$5}' | sed 's/\t/\n/g' | sed 's/_/ /g' | sed 's/NP /NP_/g' | sed 's/matchnumber /matchnumber_/g' | sed 's/ /\n/g' > a.fasta
a.fasta - как мясо птицы:
>NP_56789.2matchnumber_1
HGRR
>NP_56789.2matchnumber_2
KQRHH
>NP_56789.2matchnumber_3
RVRK
>NP_56789.2matchnumber_4
HTHH
Когда a.txt содержит несколько строк этих данных, я понятия не имею, как решить проблему.