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

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 3091 | 回復: 3
打印 上一主題 下一主題

perl 源文件的一個域和另外的文件兩個域做比較 [復制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2011-07-27 15:12 |只看該作者 |倒序瀏覽
a.unl
123456|1111|11111|fd|fdfd|dfdf|dfdfd|dfdfd|dfdfd|dfdfd|dfdfdfd|fdfd|fdfD|fd|dfdfd|dfdfd|dfdfd|dfdfd|dfdf|dfdf|
124556|1111|11111|fd|fdfd|dfdf|dfdfd|dfdfd|dfdfd|dfdfd|dfdfdfd|fdfd|fdfD|fd|dfdfd|dfdfd|dfdfd|dfdfd|dfdf|dfdf|
234333|2222|22222|fd|fdfd|dfdf|dfdfd|dfdfd|dfdfd|dfdfd|dfdfdfd|fdfd|fdfD|fd|dfdfd|dfdfd|dfdfd|dfdfd|dfdf|dfdf|
235454|2222|22222|fd|fdfd|dfdf|dfdfd|dfdfd|dfdfd|dfdfd|dfdfdfd|fdfd|fdfD|fd|dfdfd|dfdfd|dfdfd|dfdfd|dfdf|dfdf|

b.unl
123|124|

c.unl
234|235|

根據(jù)a.unl文件的第1域的前3個字符和b.unl c.unl兩個文件的兩個域做比較(b.unl和c.unl文件的第一個域是比較的最小值,第二個域是比較的最大值),如果上面的數(shù)據(jù):
a.unl的第一域的前3個字符是123,123符合大于等于b.unl文件的第1個域,也符合小于等于b.unl文件的第2個域,即:123(b文件)>=123(a文件)<=124(b文件)
a.unl的第2條數(shù)據(jù):也是符合b.unl文件   123(b文件)>=124(a文件)<=124(b文件)
a.unl的第3條數(shù)據(jù):符合c.unl文件   234(c文件)>=234(a文件)<=235(c文件)
a.unl的第4條數(shù)據(jù):也是符合c.unl文件   234(c文件)>=235(a文件)<=235(c文件)

最終的結(jié)果是:匹配到b.unl文件的范圍的數(shù)據(jù)放入new1.unl;匹配到c.unl文件的范圍的數(shù)據(jù)放入new2.unl文件。

注意:a.unl和b.unl、c.unl文件的數(shù)據(jù)很有很多,這里就不一一列出來。

論壇徽章:
0
2 [報告]
發(fā)表于 2011-07-27 16:31 |只看該作者
自己頂一下

論壇徽章:
1
辰龍
日期:2014-05-15 19:37:15
3 [報告]
發(fā)表于 2011-07-27 17:54 |只看該作者
  1. #!/usr/bin/perl
  2. use strict;
  3. use File::Slurp;
  4. use Data::Dumper;

  5. my %bHash;
  6. for my $line ( read_file("b.unl") ) {
  7.     if ($line =~ /^(\d+)\|(\d+)/) {
  8.         $bHash{$1} = $2
  9.     }
  10. }

  11. my %cHash;
  12. for my $line ( read_file("c.unl") ) {
  13.     if ($line =~ /^(\d+)\|(\d+)/) {
  14.         $cHash{$1} = $2
  15.     }
  16. }

  17. open my $new1_fh, ">", "new1.unl" or die "$!";
  18. open my $new2_fh, ">", "new2.unl" or die "$!";
  19. for my $line ( read_file("a.unl") ) {
  20.     my ($number) = $line =~ /^(\d\d\d)/;

  21.     for my $key ( keys %bHash ) {
  22.         print $new1_fh $line if $number >= $key and $number <= $bHash{$key};
  23.     }

  24.     for my $key ( keys %cHash ) {
  25.         print $new2_fh $line if $number >= $key and $number <= $cHash{$key};
  26.     }
  27. }
  28. close $new1_fh;
  29. close $new2_fh;
復制代碼

論壇徽章:
0
4 [報告]
發(fā)表于 2011-07-28 11:11 |只看該作者

  1. #! /usr/bin/perl
  2. use warnings;
  3. use strict;

  4. my %hash;
  5. my ($b_min,$b_max,$c_min,$c_max);
  6. open my $fh_a,"<","a.unl" or die "Cannot open file:$!\n";
  7. open my $fh_b_in,"<","b.unl" or die "Cannot open file:$!\n";
  8. open my $fh_b_out,">","new1.unl" or die "Cannot write file:$!\n";
  9. open my $fh_c_in,"<","c.unl" or die "Cannot open file:$!\n";
  10. open my $fh_c_out,">","new2.unl" or die "Cannot write file:$!\n";

  11. while (<$fh_a>) {
  12.         chomp;
  13.         $hash{$_} = substr((split /\|/)[0],0,3);
  14. }

  15. while(<$fh_b_in>) {
  16.         ($b_min,$b_max) = (split /\|/);
  17.         for (keys %hash) {
  18.                 if ( $hash{$_} >= $b_min and $hash{$_} <= $b_max ) {
  19.                         print $fh_b_out "$_\n";
  20.                 }               
  21.         }       
  22. }

  23. while(<$fh_c_in>) {
  24.         ($c_min,$c_max) = (split /\|/);
  25.         for (keys %hash) {
  26.                 if ( $hash{$_} >= $c_min and $hash{$_} <= $c_max ) {
  27.                         print $fh_c_out "$_\n";
  28.                 }       
  29.         }
  30. }
復制代碼
暈了,好像打開的句柄數(shù)比較多~~
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(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