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
파일 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
한 가지 방법은 다음과 같습니다 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
오류를 수정하려면 pragma를 포함하세요.- 파일 B 열기
- FileA의 시작 부분에서 >Node와 일치하는 줄의 경우 FileB를 4번 읽고 줄 바꿈을 제거합니다.