亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
樓主: little_joe
打印 上一主題 下一主題

’求助。!求助!!文件匹配輸出特定的內(nèi)容‘ [復(fù)制鏈接]

論壇徽章:
0
41 [報告]
發(fā)表于 2016-06-19 12:02 |只看該作者
本帖最后由 little_joe 于 2016-06-19 12:07 編輯

Query= NP_418697.1-1
...
Query  34   NNICERAIRPVVMGRKAWLFAGSLVAGNRAAQIMSLLGT---------AVWSHMLGWRTS  84
            NNI E A+R V +GRK +LF GS   G R A + SL+GT         +   H+LG   
Sbjct  57   NNIAENALRAVSLGRKNFLFFGSDHGGERGALLYSLIGTCKLNDVDPESYLRHVLGVIAD  116
文件A是81的話,Query行取值應(yīng)該為W,Sbjct行則取對應(yīng)的V,謝謝您。
也就是說當(dāng)Query行出現(xiàn)“-”不會影響數(shù)值匹配,但是如果Sbjct行出現(xiàn)“-”則Query對應(yīng)的Sbjct則會發(fā)生變化回復(fù) 39# sunzhiguolu


   

論壇徽章:
307
程序設(shè)計版塊每周發(fā)帖之星
日期:2016-04-08 00:41:33操作系統(tǒng)版塊每日發(fā)帖之星
日期:2015-09-02 06:20:00每日論壇發(fā)貼之星
日期:2015-09-02 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-09-04 06:20:00每日論壇發(fā)貼之星
日期:2015-09-04 06:20:00每周論壇發(fā)貼之星
日期:2015-09-06 22:22:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-09-09 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-09-19 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-09-20 06:20:00每日論壇發(fā)貼之星
日期:2015-09-20 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-09-22 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-09-24 06:20:00
42 [報告]
發(fā)表于 2016-06-19 17:34 |只看該作者
回復(fù) 40# little_joe
再試下,
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;

  4. sub collect_data{
  5.     my (%ha, %hFilt, $id);
  6.     open (my $fhA, '<', shift);
  7.     while (defined (local $_ = <$fhA>)){
  8.         if (/\A(\D\S+)/){
  9.             %hFilt = () if (!exists $ha{$1});
  10.             $id = $1;
  11.             next;
  12.         }
  13.         s/\s+\z//;
  14.         push (@{$ha{$id}}, $_) if (!$hFilt{$_}++);
  15.     }
  16.     close ($fhA);
  17.     \%ha;
  18. }

  19. sub compare{
  20.     my ($id, $rh, @aData) = (@_);
  21.     my %hStat;
  22.     foreach my $v (@{$rh->{$id}}){
  23.         foreach my $V (grep {$v >= $_->[0] && $v <= $_->[2]} @aData){
  24.             my ($cnt, $leng) = (0, $v - $V->[0] + 1);
  25.             if ((local $_ = substr ($V->[1], 0, $leng)) =~ /-/){
  26.                 $cnt = s/-//g;
  27.                 $cnt += length ($1) if (substr ($V->[1], $leng) =~ /\A(-+)/);
  28.             }
  29.             my @aChars = split (//, $V->[4]);
  30.             next if ($aChars[$v - $V->[0] + $cnt] eq '-');
  31.             $hStat{$aChars[$v - $V->[0] + $cnt]}++;
  32.         }
  33.     }
  34.     if (%hStat){
  35.         print "$id\t";
  36.         print "$_:$hStat{$_}\t" for keys %hStat;
  37.         print "\n";
  38.     }
  39. }

  40. my $rha = collect_data (shift);

  41. open (my $fh, '<', shift);
  42. my ($Flag, $Offset, $ID, @aData) = 0;
  43. while (defined (local $_ = <$fh>)){
  44.     next if (/\A\s*\z/ or !/\A(?:Query|Sbjct)/);
  45.     if (/\AQuery=\h+(\S+)/){
  46.         compare ($ID, $rha, splice (@aData)) if (@aData);
  47.         exists ($rha->{$1}) ? do {($ID, $Flag, $Offset) = ($1, 1, -1)} : ($Flag = 0);
  48.         next;
  49.     }
  50.     next if (!$Flag);
  51.     if (/\A(Query|Sbjct)\h+(\d+)\h+(\H+)\h+(\d+)/){
  52.         push (@{$aData[$1 eq "Query" ? ++$Offset : $Offset]}, $2, $3, $4);
  53.     }
  54. }
  55. close ($fh);
  56. compare ($ID, $rha, splice (@aData)) if ($Flag);
復(fù)制代碼
perl abc.pl a b
---------------------------------
NP_415088.1-1   W:4
NP_415560.1-1   S:1
YP_025310.1-1   V:1     S:1
YP_588459.1-1   N:1     K:1
YP_002791252.1-1        S:1
NP_418697.1-1   W:7     V:7

論壇徽章:
0
43 [報告]
發(fā)表于 2016-06-19 17:52 |只看該作者
非常感謝。 回復(fù) 41# sunzhiguolu


   

論壇徽章:
307
程序設(shè)計版塊每周發(fā)帖之星
日期:2016-04-08 00:41:33操作系統(tǒng)版塊每日發(fā)帖之星
日期:2015-09-02 06:20:00每日論壇發(fā)貼之星
日期:2015-09-02 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-09-04 06:20:00每日論壇發(fā)貼之星
日期:2015-09-04 06:20:00每周論壇發(fā)貼之星
日期:2015-09-06 22:22:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-09-09 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-09-19 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-09-20 06:20:00每日論壇發(fā)貼之星
日期:2015-09-20 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-09-22 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-09-24 06:20:00
44 [報告]
發(fā)表于 2016-06-19 18:24 |只看該作者
本帖最后由 sunzhiguolu 于 2016-06-21 13:48 編輯

回復(fù) 42# little_joe
用這個處理一下你的實際文件, 應(yīng)該沒啥問題了.
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;

  4. sub collect_data{
  5.     my (%ha, %hFilt, $id);
  6.     open (my $fhA, '<', shift);
  7.     while (defined (local $_ = <$fhA>)){
  8.         if (/\A([a-z]\S+)/i){
  9.             %hFilt = () if (!exists $ha{$1});
  10.             $id = $1;
  11.             next;
  12.         }
  13.         push (@{$ha{$id}}, $1) if (/\A\s*(\d+)/ and !$hFilt{$1}++);
  14.     }
  15.     close ($fhA);
  16.     \%ha;
  17. }

  18. sub compare{
  19.     my ($id, $rh, @aData) = (@_);
  20.     my %hStat;
  21.     foreach my $v (@{$rh->{$id}}){
  22.         foreach my $V (grep {$v >= $_->[0] && $v <= $_->[2]} @aData){
  23.             my ($cnt, $leng) = (0, $v - $V->[0] + 1);
  24.             if ((local $_ = substr ($V->[1], 0, $leng)) =~ /-/){
  25.                 $cnt = s/-//g;
  26.                 $cnt += length ($1) if (substr ($V->[1], $leng - 2, 1) eq '-' and substr ($V->[1], $leng) =~ /\A(-+)/);
  27.             }
  28.             my @aChars = split (//, $V->[4]);
  29.             next if ($aChars[$v - $V->[0] + $cnt] eq '-');
  30.             $hStat{$aChars[$v - $V->[0] + $cnt]}++;
  31.         }
  32.     }
  33.     if (%hStat){
  34.         print "$id\t";
  35.         print "$_:$hStat{$_}\t" for keys %hStat;
  36.         print "\n";
  37.     }
  38. }

  39. my $rha = collect_data (shift);

  40. open (my $fh, '<', shift);
  41. my ($Flag, $Offset, $ID, @aData) = 0;
  42. while (defined (local $_ = <$fh>)){
  43.     next if (/\A\s*\z/ or !/\A(?:Query|Sbjct)/);
  44.     if (/\AQuery=\h+(\S+)/){
  45.         compare ($ID, $rha, splice (@aData)) if (@aData);
  46.         exists ($rha->{$1}) ? do {($ID, $Flag, $Offset) = ($1, 1, -1)} : ($Flag = 0);
  47.         next;
  48.     }
  49.     next if (!$Flag);
  50.     if (/\A(Query|Sbjct)\h+(\d+)\h+(\H+)\h+(\d+)/){
  51.         push (@{$aData[$1 eq "Query" ? ++$Offset : $Offset]}, $2, $3, $4);
  52.     }
  53. }
  54. close ($fh);
  55. compare ($ID, $rha, splice (@aData)) if ($Flag);
復(fù)制代碼

論壇徽章:
307
程序設(shè)計版塊每周發(fā)帖之星
日期:2016-04-08 00:41:33操作系統(tǒng)版塊每日發(fā)帖之星
日期:2015-09-02 06:20:00每日論壇發(fā)貼之星
日期:2015-09-02 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-09-04 06:20:00每日論壇發(fā)貼之星
日期:2015-09-04 06:20:00每周論壇發(fā)貼之星
日期:2015-09-06 22:22:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-09-09 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-09-19 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-09-20 06:20:00每日論壇發(fā)貼之星
日期:2015-09-20 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-09-22 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-09-24 06:20:00
45 [報告]
發(fā)表于 2016-06-19 18:43 |只看該作者
本帖最后由 sunzhiguolu 于 2016-06-19 18:51 編輯

最后再問你一個問題, 對于這種情況 如何處理: (假設(shè) A 中數(shù)值 78)
以下為對應(yīng)的 B 文件的 Query, Sbjct 行:
Query  59   FSGDMLPD-GINRRWLTPAB---LRQPVVCLNRSGNMVGQSVLPMAG-LSGKKKATKNSLF  116
              G       IN R  T A S++ +P+          G+++    G    KK+  KNSL
Sbjct  61   APGWWDKPPLINARVETAATSRMFKPLW-------QHGRAICFADGWFEWKKEGDKNSLI  113

Query  59   FSGDMLPDGINRRWLTPAB-LRQPVVCLNRSGNMVGQSVLPMAG-LSGKKKATKNSLF  116
              G       IN R  T A S++ +P+          G+++    G    KK+  KNSL
Sbjct  61   APGWWDKPPLINARVETAATSRMFKPLW-------QHGRAICFADGWFEWKKEGDKNSLI  113

Query  59   FSGDMLPD-GINRRWLTPABT-LRQPVVCLNRSGNMVGQSVLPMAG-LSGKKKATKNSLF  116
              G       IN R  T A S++ +P+          G+++    G    KK+  KNSL
Sbjct  61   APGWWDKPPLINARVETAATSRMFKPLW-------QHGRAICFADGWFEWKKEGDKNSLI  113

此時, 對于 Query, Sbjct 字符應(yīng)該落在哪里? (回帖時請使用上面這個示例進(jìn)行說明, 這樣我容易理解一點) 只是驗證下我對于你先前說的那樣內(nèi)容是否已經(jīng)理解, 代碼邏輯是否存在紕漏.

論壇徽章:
0
46 [報告]
發(fā)表于 2016-06-20 17:27 |只看該作者
Query  59   FSGDMLPD-GINRRWLTPAB---LRQPVVCLNRSGNMVGQSVLPMAG-LSGKKKATKNSLF  116
              G       IN R  T A S++ +P+          G+++    G    KK+  KNSL
Sbjct  61   APGWWDKPPLINARVETAATSRMFKPLW-------QHGRAICFADGWFEWKKEGDKNSLI  113

Query  59   FSGDMLPDGINRRWLTPAB-LRQPVVCLNRSGNMVGQSVLPMAG-LSGKKKATKNSLF  116
              G       IN R  T A S++ +P+          G+++    G    KK+  KNSL
Sbjct  61   APGWWDKPPLINARVETAATSRMFKPLW-------QHGRAICFADGWFEWKKEGDKNSLI  113

Query  59   FSGDMLPD-GINRRWLTPABT-LRQPVVCLNRSGNMVGQSVLPMAG-LSGKKKATKNSLF  116
              G       IN R  T A S++ +P+          G+++    G    KK+  KNSL
Sbjct  61   APGWWDKPPLINARVETAATSRMFKPLW-------QHGRAICFADGWFEWKKEGDKNSLI  113
如果文件A數(shù)值為78則對應(yīng)的Query行和Sbjct行應(yīng)該是紅色的字母,您的想法是正確的,謝謝您的熱情幫助及指教,謝謝您!回復(fù) 44# sunzhiguolu


   

論壇徽章:
0
47 [報告]
發(fā)表于 2016-06-21 09:53 |只看該作者
stop_pipei_hb-1.word (1.32 MB, 下載次數(shù): 1) 麻煩還需要請教您一個問題,這個文件作為文件A跑不出結(jié)果是因為重復(fù)項太多嗎?回復(fù) 43# sunzhiguolu


   

論壇徽章:
7
2015年迎新春徽章
日期:2015-03-04 10:01:442015年亞洲杯之科威特
日期:2015-04-17 17:27:042015亞冠之阿爾薩德
日期:2015-07-22 15:25:4015-16賽季CBA聯(lián)賽之吉林
日期:2016-04-11 13:57:30操作系統(tǒng)版塊每日發(fā)帖之星
日期:2016-06-24 06:20:00每日論壇發(fā)貼之星
日期:2016-06-24 06:20:0015-16賽季CBA聯(lián)賽之遼寧
日期:2017-05-09 12:31:45
48 [報告]
發(fā)表于 2016-06-21 09:58 |只看該作者
頂貼,理解能力弱

論壇徽章:
0
49 [報告]
發(fā)表于 2016-06-21 10:28 |只看該作者
謝謝關(guān)注!回復(fù) 47# 251744647


   

論壇徽章:
307
程序設(shè)計版塊每周發(fā)帖之星
日期:2016-04-08 00:41:33操作系統(tǒng)版塊每日發(fā)帖之星
日期:2015-09-02 06:20:00每日論壇發(fā)貼之星
日期:2015-09-02 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-09-04 06:20:00每日論壇發(fā)貼之星
日期:2015-09-04 06:20:00每周論壇發(fā)貼之星
日期:2015-09-06 22:22:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-09-09 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-09-19 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-09-20 06:20:00每日論壇發(fā)貼之星
日期:2015-09-20 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-09-22 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-09-24 06:20:00
50 [報告]
發(fā)表于 2016-06-21 13:20 |只看該作者
回復(fù) 46# little_joe
再用 43 樓的代碼試下,

   
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP