У меня есть два файла A и B.
File A
>Node1
...
>Node2
...
File B
>gb|KY551314.1| Influenza A virus (A/mallard/Idaho/AH0011522/2015(H7N7)) segment
2 polymerase PB1 (PB1) and PB1-F2 protein (PB1-F2) genes,
complete cds
Length=2316
>gb|KY561069.1| Influenza A virus (A/American green-winged teal/Missouri/15OS6591/2015(H11N9))
segment 1 polymerase PB2 (PB2) gene, complete
cds
Length=2341
Как я могу заменить каждую строку NodeX в Файл A с последующими записями в файле B? Результат будет выглядеть следующим образом:
File A
>gb|KY551314.1| Influenza A virus (A/mallard/Idaho/AH0011522/2015(H7N7)) segment 2 polymerase PB1 (PB1) and PB1-F2 protein (PB1-F2) genes, complete ads Length=2316
...
>gb|KY561069.1| Influenza A virus (A/American green-winged teal/Missouri/15OS6591/2015(H11N9)) segment 1 polymerase PB2 (PB2) gene, complete ads Length=2341
...
perl -lMautodie -pe 'BEGIN{ open FILE_B, "<", pop; }
s/^>Node.*// && do{for my $k (0..3) { s/$/<FILE_B> =~ s|\n| |r/e }}
' FileA FileB
-l
=> IFS=OFS=\n
, -p
=> неявное чтение файла в цикле + автопечать записи. прагма autodie
включена для спасения при ошибках. Один из способов сделать это с помощью awk
:
awk 'NR==FNR && /^>Node/ {
$0 = ""
for(i=0; i<=4; i++) {
getline s <ARGV[2]
$0 = $0 s
}
}
NR==FNR' FileA FileB