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

  免費注冊 查看新帖 |

Chinaunix

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

在文件A中查找B、C、D中存在的元素,有的則為y,無則為n [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2014-06-24 19:51 |只看該作者 |倒序瀏覽
各位大神,請出手相助

在文件A中查找BCD中存在的元素,有的則為y,無則為n

處理前:

file A:             file B:        file C:        file D:
小明           小明                小紅           小蔡
小王                 小王           小黃                小楊
小李                 小紅                小蔡            小牛
小東                       
小蔡                       
小楊                       
小牛                       
小紅                       
小黃                       


處理后:


file A:             file B:        file C:        file D:
小明            y                  n               n
小王            y               n               n
小李            n                  n               n
小東            n                  n               n
小蔡            n                  y               y
小楊            n                  n               y
小牛            n                  n               y
小紅            y                  y               n
小黃            n                  y               n

謝謝!

論壇徽章:
6
丑牛
日期:2014-03-21 15:42:04子鼠
日期:2014-04-12 11:50:17處女座
日期:2014-09-01 09:25:1115-16賽季CBA聯(lián)賽之吉林
日期:2015-12-22 14:01:5215-16賽季CBA聯(lián)賽之廣東
日期:2016-03-08 18:49:422016科比退役紀念章
日期:2016-07-06 12:19:55
2 [報告]
發(fā)表于 2014-06-24 20:52 |只看該作者
本帖最后由 stanley_tam 于 2014-06-24 20:58 編輯

試試這個{:3_184:}
  1. #!perl
  2. use Modern::Perl;
  3. use FileHandle;

  4. my $data_href = +{};

  5. for my $file ('a', 'b', 'c', 'd'){
  6.     my @lines = FileHandle->new($file, 'r')->getlines;
  7.     chomp @lines;
  8.     $data_href->{$file} = \@lines;
  9. }

  10. my $out_fh = FileHandle->new('output.txt', 'w');
  11. $out_fh->printf("%-10s%-10s%-10s%s$/", 'file A:', 'file B:', 'file C:', 'file D:');

  12. for my $a_item ( @{ $data_href->{a} } ){
  13.     my $in_b = $a_item ~~ $data_href-> ? 'Y' : 'N';
  14.     my $in_c = $a_item ~~ $data_href->{c} ? 'Y' : 'N';
  15.     my $in_d = $a_item ~~ $data_href->a9ur7n9vt ? 'Y' : 'N';
  16.     $out_fh->printf("%-10s%-10s%-10s%s$/", $a_item, $in_b, $in_c, $in_d);
  17. }
  18. $out_fh->close;

  19. __END__
復(fù)制代碼

論壇徽章:
26
2015亞冠之胡齊斯坦鋼鐵
日期:2015-06-25 21:40:202015亞冠之柏斯波利斯
日期:2015-08-31 17:03:192015亞冠之柏斯波利斯
日期:2015-11-07 13:10:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-11-10 06:20:00每日論壇發(fā)貼之星
日期:2015-11-10 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-11-26 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-12-02 06:20:00黃金圣斗士
日期:2015-12-07 17:57:4615-16賽季CBA聯(lián)賽之天津
日期:2015-12-23 18:34:14程序設(shè)計版塊每日發(fā)帖之星
日期:2016-01-02 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2016-01-06 06:20:00每日論壇發(fā)貼之星
日期:2016-01-06 06:20:00
3 [報告]
發(fā)表于 2014-06-24 21:30 |只看該作者
我想問一下,1 file ?  4 file ? 謝謝!

論壇徽章:
0
4 [報告]
發(fā)表于 2014-06-24 21:42 |只看該作者
本人小白一個,使用了一個awk命令,awk -v OFS='\t' 'NR==FNR{x[$1]=1}NR>FNR{if(x[$1]){a="y"}else{a="n"} print $0,a}'  file1  file2,就是要重復(fù)幾次

論壇徽章:
0
5 [報告]
發(fā)表于 2014-06-24 22:15 |只看該作者
本帖最后由 45177659 于 2014-06-24 22:24 編輯
  1. $ cat search.pl
  2. #!/usr/bin/perl -w

  3. @file_list = qw/B C D/;
  4. $pat = qw/A/;

  5. # construct hash table
  6. foreach my $file (@file_list) {
  7.         open(my $fh, $file) or die;
  8.         while (defined (my $item = <$fh>)) {
  9.                 next if $item =~ /^\s*$/;
  10.                 chomp $item;
  11.                 $file{$item} = 1;
  12.         }
  13.         close $fh;
  14. }

  15. # search for each pattern in file a
  16. open($pat, "$pat") or die;
  17. print "A      B   C   D\n";
  18. while (defined(my $item = <$pat>)) {
  19.         next if $item =~ /^\s*$/;
  20.         chomp $item;
  21.         print $item;
  22.         foreach my $file (@file_list) {
  23.                 print exists $$file{$item} ? "   y" : "   n";
  24.         }
  25.         print "\n";
  26. }

  27. close $pat;
復(fù)制代碼
result:
$ ./search.pl
A      B   C   D
小明   y   n   n
小王   y   n   n
小李   n   n   n
小東   n   n   n
小蔡   n   y   y
小楊   n   n   y
小牛   n   n   y
小紅   n   y   n
小黃   n   y   n

論壇徽章:
3
CU十二周年紀念徽章
日期:2013-10-24 15:41:34子鼠
日期:2013-12-14 14:57:19射手座
日期:2014-04-25 21:23:23
6 [報告]
發(fā)表于 2014-06-25 15:25 |只看該作者
本帖最后由 mcshell 于 2014-06-25 15:26 編輯
  1. my @files = qw/A B C D/;
  2. my ( $g;
  3. print join "\t", @files, "\n";
  4. my $all = shift @files;
  5. for my $file (@files) {
  6.     open FH, $file or die $!;
  7.     while (<FH>) {
  8.         chomp;
  9.         push @{ $g->{$file} }, $_;
  10.     }
  11. }
  12. open FA, $all or die $!;
  13. while (  my $line = <FA>  ) {
  14.     chomp $line;
  15.     print $line;
  16.     my $letter;
  17.     for my $file (@files) {
  18.         for ( @{ $g->{$file} } ) {
  19.             $line eq $_ ? do { $letter = "y"; last } : do { $letter = "n" };
  20.         }
  21.         print "\t$letter";
  22.     }
  23.     print "\n";
  24. }
復(fù)制代碼

論壇徽章:
7
戌狗
日期:2013-12-15 20:43:38技術(shù)圖書徽章
日期:2014-03-05 01:33:12技術(shù)圖書徽章
日期:2014-03-15 20:31:17未羊
日期:2014-03-25 23:48:20丑牛
日期:2014-04-07 22:37:44巳蛇
日期:2014-04-11 21:58:0915-16賽季CBA聯(lián)賽之青島
日期:2016-03-17 20:36:13
7 [報告]
發(fā)表于 2014-06-26 04:08 |只看該作者
本帖最后由 rubyish 于 2014-06-26 00:20 編輯

perl abc.pl file1 > file2
  1. #!/usr/bin/perl
  2. my ( %h, @k );
  3. my $title = <>;
  4. my $max   = ( $title =~ tr/\t// ) - 1;
  5. print $title;

  6. while (<>) {
  7.     chomp;
  8.     my ( $k, @ks ) = split /\t/;
  9.     push @k, $k;
  10.     $h{ $ks[$_] }[$_] = 'y' for 0 .. $#ks;
  11. }

  12. for my $k (@k) {
  13.     print join( "\t", $k, map { $h{$k}[$_] || 'n' } 0 .. $max ), $/;
  14. }

復(fù)制代碼

論壇徽章:
0
8 [報告]
發(fā)表于 2014-06-26 10:06 |只看該作者
回復(fù) 1# 米蘭的_小木匠
  1. my @fileA = qw(小明 小王 小李 小東 小蔡 小楊 小紅);
  2. my @fileB = qw(小明 小王 小紅);
  3. my %hash;

  4. foreach my $item (@fileB){
  5.         $hash{$item} = 1;
  6. }

  7. foreach my $item (@fileA){
  8.         if($hash{$item}){
  9.                 print "$item -> Y\n";
  10.         }
  11.         else
  12.         {
  13.                 print "$item -> N\n";
  14.         }
  15. }
復(fù)制代碼
  1. 小明 -> Y
  2. 小王 -> Y
  3. 小李 -> N
  4. 小東 -> N
  5. 小蔡 -> N
  6. 小楊 -> N
  7. 小紅 -> Y
復(fù)制代碼

論壇徽章:
0
9 [報告]
發(fā)表于 2014-07-01 15:43 |只看該作者
mark downhere

論壇徽章:
8
技術(shù)圖書徽章
日期:2013-08-22 11:21:28未羊
日期:2015-01-19 22:22:25巳蛇
日期:2014-08-11 16:53:08子鼠
日期:2014-05-29 09:04:44摩羯座
日期:2014-04-11 14:15:07丑牛
日期:2014-01-24 12:41:28金牛座
日期:2013-11-21 17:38:28射手座
日期:2015-01-21 08:50:32
10 [報告]
發(fā)表于 2014-07-01 17:03 |只看該作者
菜鳥也來一個吧。。。
不過,總是感覺哪不對。。。
  1. my ( %h, @k );
  2. my $ref = shift @ARGV;
  3. my $title = 'file\name';
  4. open REF, $ref or die "$!";
  5. map {chomp;$title .= "\t$_"} <REF>;
  6. close REF;
  7. foreach my $value(@ARGV){
  8.         open RT, $value or die "$!";
  9.         map {chomp;$h->{$value}->{$_} = 'y';}<RT>;
  10.         open REF, $ref or die "$!";
  11.         push @k, join( "\t", $value, map {chomp;$h->{$value}->{$_} || 'n';} <REF>)."\n";
  12.         close REF;
  13.         close RT;
  14. }

  15. print "$title\n@k";


  16. ---------------------------------
  17. perl test.pl ref file1 file2 file3
  18. file\name    小明    小王    小李    小東    小蔡    小楊    小牛    小紅    小黃
  19. file1   y       y       n       n       n       n       n       y       n
  20. file2  n       n       n       n       y       n       n       y       y
  21. file3  n       n       n       n       y       y       y       n       n
復(fù)制代碼
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(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