灌个水!
每次看到你的头像我就想歪了!!!!! 作者: codeternity 时间: 2013-09-16 23:34 回复 6# Cu_fans
十分感谢大侠,按照您给出的程序,的确做出我想要的来了。
不过,我有个疑问如果
new1.txt为:
SH CC XX
GZ BB YY
SZ CC ZZ
BJ DD WW
new2.txt为:
TJ BB OO
HN CC PP
HB EE QQ
HN FF RR
二者得出的结果应该是:
GZ BB YY
TJ BB OO
SH CC XX
SZ CC ZZ
HN CC PP
但结果却是:
HN CC PP
SH CC XX
TJ BB OO
GZ BB YY
HN CC PP
SZ CC ZZ
我就是想问当一个文件里的第二列值有重复的话,该怎么办呢作者: inchonline 时间: 2013-09-17 01:04 回复 8# yinyuemi
要修改为如下才能得出结果:
#!/usr/bin/perl
use strict;
my %hash;
open(f1,"file1") or die "$!\n";
open(f2,"file2") or die "$!\n";
my @data;
while(<f1>){
@data = split/\s+/;
$hash{$data[1]}->[0]++;
$hash{$data[1]}->[1] = $_;
}
# the value of %hash is the ref of array, [counts of column2, data of one line];
open(f1,"file1") or die "$!\n";
open(f2,"file2") or die "$!\n";
my @data;
while(<f1>){
@data = split/\s+/;
$hash{$data[1]}->[0]++;
$hash{$data[1]}->[1] = $_;
}
# the value of %hash is the ref of array, [counts of column2, data of one line];
作者: codeternity 时间: 2013-09-17 10:23 回复 14# rubyish
谢谢大神,真的可以,不过可不可以按每个文本输出结果,就是想把第一个文件的放一起,第二个放一起,比如上面的结果为:
SH CC XX
GZ BB YY
SZ CC ZZ
TJ BB OO
HN CC PP
上面三行是第一个文件的,下面的是第二个的……
作者: codeternity 时间: 2013-09-20 23:14 回复 24# rubyish
大侠,如查这两个文件是这样的:
new1.txt
SH AA XX
GZ BB YY
SZ CC ZZ
BJ DD WW
new2.txt
SH
GZ
SZ
BJ
TJ
HN
NB
我想根据第二个文件补全第一个文件,没有的用-代替,即
SH AA XX
GZ BB YY
SZ CC ZZ
BJ DD WW
TJ - -
HN - -
NB - -
应该怎么实现呢