У меня есть файл с такой структурой:Файл с нерегулярной AWK
file1
>ENSGALG00000000011|ENSGALT00000000012|57|1123|1125
cttttccactttgctctcatcCTGCTATTGGATTTgagatgcatgtcTGTTAATATTGTA
AGATTGGTGGTACATGACTGTCCTCTTTGGGATATATTTGACAGTGACTGGTATACTTCT
CGCAGTCTCATTGGAGGAGCTGATATTATTGTGATTaaatactctgtcaatGACAAGACT
>ENSGALG00000000012|ENSGALT00000000013|57|1145|1155
cttttccactttgctctcatcCTGCTATTGGATTTgagatgcatgtcTGTTAATATTGTA
GCCAATCACATTAGAAATCCTGTTTTTACTGAATATCAAGCCTGCGTGTTTGGAAATGTC
AGATTGGTGGTACATGACTGTCCTCTTTGGGATATATTTGACAGTGACTGGTATACTTCT
CGCAGTCTCATTGGAGGAGCTGATATTATTGTGATTaaatactctgtcaatGACAAGACT
>ENSGALG00000000015|ENSGALT00000000014|57|1144|1155
GCCAATCACATTAGAAATCCTGTTTTTACTGAATATCAAGCCTGCGTGTTTGGAAATGTC
AGATTGGTGGTACATGACTGTCCTCTTTGGGATATATTTGACAGTGACTGGTATACTTCT
CGCAGTCTCATTGGAGGAGCTGATATTATTGTGATTaaatactctgtcaatGACAAGACT
Я хочу использовать другой файл, чтобы извлечь из них, которые имеют определенную идею в первой части, то есть использовать этот файл:
file2 Код:
ENSGALG00000000011
ENSGALG00000000015
Хотеть конечный результат будет так:
>ENSGALG00000000011|ENSGALT00000000012|57|1123|1125
cttttccactttgctctcatcCTGCTATTGGATTTgagatgcatgtcTGTTAATATTGTA
AGATTGGTGGTACATGACTGTCCTCTTTGGGATATATTTGACAGTGACTGGTATACTTCT
CGCAGTCTCATTGGAGGAGCTGATATTATTGTGATTaaatactctgtcaatGACAAGACT
>ENSGALG00000000015|ENSGALT00000000014|57|1144|1155
GCCAATCACATTAGAAATCCTGTTTTTACTGAATATCAAGCCTGCGTGTTTGGAAATGTC
AGATTGGTGGTACATGACTGTCCTCTTTGGGATATATTTGACAGTGACTGGTATACTTCT
CGCAGTCTCATTGGAGGAGCTGATATTATTGTGATTaaatactctgtcaatGACAAGACT
Я знаю, что этот код:
awk -F"|" 'FNR==NR{A[">"$1];next}($1 in A){print;getline;print}' file2 file1
, но проблема в том, что это только дает мне первую строку содержимого каждого из заголовков , По-видимому, это происходит потому, что AWK ищет аналогичную модель, но я знаю только AWK, мне было интересно, есть ли другой способ получить нужный мне результат.
Большое спасибо за вашу помощь. Cheers,
Так что вам нужно многострочный regex, который захватывает что-то вроде '/> ENSGALG00000000011 [^>] * /', правильно? – abiessu