Я хочу использовать AWK, но мне кажется, что первая запись не совсем правильная. Я надеюсь, что любой может помочь сделать это правильно.
У меня есть этот файл, каждая запись состоит из 3 строк, но иногда она имеет 4 строки (так что есть $ 3 и $ 4). Моя цель состоит в том, чтобы напечатать все три строки каждой записи, и если есть четвертая строка, я хочу также напечатать первые 2 строки с четвертой (без 3-й).
Моя стратегия заключается в использовании строки ("Sequence:") в качестве RS и новой строки ("\ n") для FS.
Мой файл выглядит так:
Sequence: X92272_IGHV4-31*08_Homosapiens_F_V-REGION_140..429_290nt_1_____290+0=290_partialin3'__ from: 1 to: 290
Start End Strand Pattern Mismatch Sequence
184 192 + pattern:AA[CT]NNN[AT]CN . aacccgtcc
Sequence: X92273_IGHV4-31*09_Homosapiens_F_V-REGION_140..429_290nt_1_____290+0=290_partialin3'__ from: 1 to: 290
Start End Strand Pattern Mismatch Sequence
184 192 + pattern:AA[CT]NNN[AT]CN . aacccgtcc
Sequence: Z14235_IGHV4-31*10_Homosapiens_F_V-REGION_140..438_299nt_1_____299+0=299___ from: 1 to: 299
Start End Strand Pattern Mismatch Sequence
184 192 + pattern:AA[CT]NNN[AT]CN . aacccgtcc
Sequence: AB019439_IGHV4-34*01_Homosapiens_F_V-REGION_59657..59949_293nt_1_____293+0=293___ from: 1 to: 293
Start End Strand Pattern Mismatch Sequence
150 158 + pattern:AA[CT]NNN[AT]CN . aatcaatca
178 186 + pattern:AA[CT]NNN[AT]CN . aacccgtcc
Sequence: M99684_IGHV4-34*02_Homosapiens_F_V-REGION_311..603_293nt_1_____293+0=293___ from: 1 to: 293
Start End Strand Pattern Mismatch Sequence
150 158 + pattern:AA[CT]NNN[AT]CN . aatcaatca
178 186 + pattern:AA[CT]NNN[AT]CN . aacccgtcc
С помощью следующего кода я получаю испорченную первую запись, потому что строка также находится в начале файла.
awk '{ RS="Sequence: "; FS="\n" }
{
if ($4 != "" )
print $1,"\n",$2,"\n",$3,"\n",$1,"\n",$2,"\n",$4
else
print $1,"\n",$2,"\n",$3 ;
}' short.txt > test
С выводом:
Sequence:
X92272_IGHV4-31*08_Homosapiens_F_V-REGION_140..429_290nt_1_____290+0=290_partialin3'__
from:
Sequence:
X92272_IGHV4-31*08_Homosapiens_F_V-REGION_140..429_290nt_1_____290+0=290_partialin3'__
1
Start End Strand Pattern Mismatch Sequence
184 192 + pattern:AA[CT]NNN[AT]CN . aacccgtcc
X92273_IGHV4-31*09_Homosapiens_F_V-REGION_140..429_290nt_1_____290+0=290_partialin3'__ from: 1 to: 290
Start End Strand Pattern Mismatch Sequence
184 192 + pattern:AA[CT]NNN[AT]CN . aacccgtcc
Z14235_IGHV4-31*10_Homosapiens_F_V-REGION_140..438_299nt_1_____299+0=299___ from: 1 to: 299
Start End Strand Pattern Mismatch Sequence
184 192 + pattern:AA[CT]NNN[AT]CN . aacccgtcc
AB019439_IGHV4-34*01_Homosapiens_F_V-REGION_59657..59949_293nt_1_____293+0=293___ from: 1 to: 293
Start End Strand Pattern Mismatch Sequence
150 158 + pattern:AA[CT]NNN[AT]CN . aatcaatca
AB019439_IGHV4-34*01_Homosapiens_F_V-REGION_59657..59949_293nt_1_____293+0=293___ from: 1 to: 293
Start End Strand Pattern Mismatch Sequence
178 186 + pattern:AA[CT]NNN[AT]CN . aacccgtcc
M99684_IGHV4-34*02_Homosapiens_F_V-REGION_311..603_293nt_1_____293+0=293___ from: 1 to: 293
Start End Strand Pattern Mismatch Sequence
150 158 + pattern:AA[CT]NNN[AT]CN . aatcaatca
M99684_IGHV4-34*02_Homosapiens_F_V-REGION_311..603_293nt_1_____293+0=293___ from: 1 to: 293
Start End Strand Pattern Mismatch Sequence
178 186 + pattern:AA[CT]NNN[AT]CN . aacccgtcc
Так что я решил удалить первую строку «Sequence:» из входного файла, но это дает:
X92272_IGHV4-31*08_Homosapiens_F_V-REGION_140..429_290nt_1_____290+0=290_partialin3'__
from:
1
X92272_IGHV4-31*08_Homosapiens_F_V-REGION_140..429_290nt_1_____290+0=290_partialin3'__
from:
to:
Start End Strand Pattern Mismatch Sequence
184 192 + pattern:AA[CT]NNN[AT]CN . aacccgtcc
X92273_IGHV4-31*09_Homosapiens_F_V-REGION_140..429_290nt_1_____290+0=290_partialin3'__ from: 1 to: 290
Start End Strand Pattern Mismatch Sequence
184 192 + pattern:AA[CT]NNN[AT]CN . aacccgtcc
Z14235_IGHV4-31*10_Homosapiens_F_V-REGION_140..438_299nt_1_____299+0=299___ from: 1 to: 299
Start End Strand Pattern Mismatch Sequence
184 192 + pattern:AA[CT]NNN[AT]CN . aacccgtcc
AB019439_IGHV4-34*01_Homosapiens_F_V-REGION_59657..59949_293nt_1_____293+0=293___ from: 1 to: 293
Start End Strand Pattern Mismatch Sequence
150 158 + pattern:AA[CT]NNN[AT]CN . aatcaatca
AB019439_IGHV4-34*01_Homosapiens_F_V-REGION_59657..59949_293nt_1_____293+0=293___ from: 1 to: 293
Start End Strand Pattern Mismatch Sequence
178 186 + pattern:AA[CT]NNN[AT]CN . aacccgtcc
M99684_IGHV4-34*02_Homosapiens_F_V-REGION_311..603_293nt_1_____293+0=293___ from: 1 to: 293
Start End Strand Pattern Mismatch Sequence
150 158 + pattern:AA[CT]NNN[AT]CN . aatcaatca
M99684_IGHV4-34*02_Homosapiens_F_V-REGION_311..603_293nt_1_____293+0=293___ from: 1 to: 293
Start End Strand Pattern Mismatch Sequence
178 186 + pattern:AA[CT]NNN[AT]CN . aacccgtcc
Итак, снова первая запись испорчена. Есть ли решение этой проблемы? Мой ожидаемый вывод - последний вывод (со строкой «Sequence:» или без нее), но первая запись верна.