[問題] 區塊內取值
這是目前我手上的資料內容,因為它的內容很多,而現階段我只要用到其中兩項的資料,
所以試著寫個程式去抓取,結果一直沒辦法達成我想要的目標!
檔案部分內容:
ID 108_SOLLC Reviewed; 102 AA.
AC Q43495;
DT 15-JUL-1999, integrated into UniProtKB/Swiss-Prot.
DR PIR; S26409; S26409.
DR RefSeq; XP_004228450.1; XM_004228402.1.
DR EnsemblPlants; Solyc01g009590.2.1; Solyc01g009590.2.1; Solyc01g009590.2.
DR GeneID; 544145; -.
ID 109_SOLLC Reviewed; 102 AA.
AC Q43400;
DT 15-JUL-1999, integrated into UniProtKB/Swiss-Prot.
DR RefSeq; XP_004228450.1; XM_004228402.1.
DR RefSeq; XP_004228451.1; XM_004228403.1.
DR UniGene; Les.3896; -.
DR KEGG; sly:544145; -.
ID 110_SOLLC Reviewed; 102 AA.
AC Q43499;
DT 15-JUL-1999, integrated into UniProtKB/Swiss-Prot.
DR RefSeq; XP_004228450.1; XM_004228402.1.
DR RefSeq; XP_004228451.1; XM_004228403.1.
DR EnsemblPlants; Solyc01g009999.2.1; Solyc01g009999.2;
DR UniGene; Les.3896; -.
DR KEGG; sly:544145; -.
這是我試著寫的程式碼:
#!/usr/bin/env -perl -w
open my $file, "<", @ARGV;
while (<$file>) {
if (/^AC/) {
$_ =~ /(\w{6})/;
print "$1\t" if ($1);
}
if (/^DR/) {
$_ =~ /(Solyc\w+\.\d)/;
print "$1\n" if ($1);
}
}
close $uniprot;
上述程式碼輸出的結果會像這樣:
Q43495 Solyc01g009590.2
Q43400 Q43999 Solyc01g009999.2
可是我想排出來的樣式是:
Q43495 Solyc01g009590.2
Q43000
Q43999 Solyc01g009999.2
如果我把加了一個判斷式在裡面,沒有比對到的部分就會變成空白行 :(
if (/^DR/) {
$_ =~ /(Solyc\w+\.\d)/;
print ($1) ? "$1\n" : "\n";
}
請問,我該如何修改它,才能輸出成我想要的格式?謝謝
另外想問個問題,我在書上看到能進行多行的比對,
但書上的例子是整個內容一起比,
像上面的例子,可以看出來它是由「ID」開頭的一行做為一個段落的起點,
然後接著數目不定的行數,
下一個「ID」才是另一個段落的開始。
我能夠只針對兩個「ID」之間的內容進行比對嗎?
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.117.184.134
※ 文章網址: http://www.ptt.cc/bbs/Perl/M.1399397472.A.A26.html
推
05/07 03:15, , 1F
05/07 03:15, 1F
→
05/07 03:16, , 2F
05/07 03:16, 2F
→
05/07 03:16, , 3F
05/07 03:16, 3F
→
05/07 03:17, , 4F
05/07 03:17, 4F
→
05/07 09:47, , 5F
05/07 09:47, 5F
→
05/07 09:48, , 6F
05/07 09:48, 6F
→
05/07 09:49, , 7F
05/07 09:49, 7F
→
05/07 09:50, , 8F
05/07 09:50, 8F
→
05/07 12:56, , 9F
05/07 12:56, 9F
→
05/10 17:40, , 10F
05/10 17:40, 10F
→
06/01 09:44, , 11F
06/01 09:44, 11F
→
06/01 09:45, , 12F
06/01 09:45, 12F
Perl 近期熱門文章
PTT數位生活區 即時熱門文章