A、B 2つのファイルがあります。
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
ファイルAの各NodeX行をファイル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
...
答え1
1つの方法は次のとおりですawk
。
awk 'NR==FNR && /^>Node/ {
$0 = ""
for(i=0; i<=4; i++) {
getline s <ARGV[2]
$0 = $0 s
}
}
NR==FNR' FileA FileB
答え2
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
説明する
- Perlオプション:
-l
=>IFS=OFS=\n
、-p
=>ループから暗黙のファイルを読み取り、自動的にレコードを印刷します。 autodie
エラーを修正するには、プラグマを含めてください。- ファイルBを開く
- FileAの先頭で> Nodeと一致する行の場合は、FileBを4回読み、改行を削除します。