e****e 发帖数: 3450 | 1 想按列合并两个文件,每个几百万行,每个文件4列,不可能用excel,用join也非常
messy,我硬着头皮东查西查的写了个perl script,不work (这是这辈子写的第2
个perl程序)。
麻烦大家帮我看看?或者有什么更简单的方法?xiexie!
#!/usr/bin/perl
use strict;
# this program is for merging the columns of two files, column 1,2 3, 4 of
file1, column 3 and 4 of file 2
my $f1 = $ARGV[0];
my $f2 = $ARGV[1];
print "Processing file $filename_1 $filename_2\n";
open (FILE_IN_1, "<$f1") || die "can not open";
open (FILE_IN_2, "<$f2") || die "can not open";
open (FILE_OUT, ">$f1.$f2.merged") || die "can not open";
while () {
chomp($_);
my @fields1 = split /\t/;
my $column1 = $fields1[0];
my $column2 = $fields1[1];
my $column3 = $fields1[2];
my $column4 = $fields1[3];
# print $column1, "\t",$column2, "\t",$column3, "\t",$column4,"\t";
}
while () {
chomp($_);
my @fields2 = split /\t/;
my $column5 = $fields2[2];
my $column6 = $fields2[3];
# print $column5, "\t",$column6,"\n";
print FILE_OUT $column1, "\t",$column2, "\t",$column3, "\t",$column4, "\
t", $column5, "\t",$column6,"\n";
}
#some kind of loop here for print FILE_OUT?
print "finished";
close (FILE_IN);
close (FILE_OUT); |
h*n 发帖数: 1915 | 2 unix上面,先back up这两个文件
然后 cat file1 >> file2 就行了吧。
of
【在 e****e 的大作中提到】 : 想按列合并两个文件,每个几百万行,每个文件4列,不可能用excel,用join也非常 : messy,我硬着头皮东查西查的写了个perl script,不work (这是这辈子写的第2 : 个perl程序)。 : 麻烦大家帮我看看?或者有什么更简单的方法?xiexie! : #!/usr/bin/perl : use strict; : # this program is for merging the columns of two files, column 1,2 3, 4 of : file1, column 3 and 4 of file 2 : my $f1 = $ARGV[0]; : my $f2 = $ARGV[1];
|
G****s 发帖数: 3523 | |
g**t 发帖数: 1872 | 4 你不用写什么程式,只要用cut和paste就可以了。
查查manpage吧,大概是:
cut -d '^VI' -f 3,4 file2 | paste file1 -
假设你的delimiter是tab。 |
a**n 发帖数: 2431 | 5 前面三个回答证实了这是硅谷
【在 g**t 的大作中提到】 : 你不用写什么程式,只要用cut和paste就可以了。 : 查查manpage吧,大概是: : cut -d '^VI' -f 3,4 file2 | paste file1 - : 假设你的delimiter是tab。
|
g**t 发帖数: 1872 | 6 吓,什么硅谷了?LZ,我的如果work请发包子。还有Ctrl-V-I是tab,在shell
里要这样才可以打到tab的,否则出来是
file completion。
【在 a**n 的大作中提到】 : 前面三个回答证实了这是硅谷
|
e****e 发帖数: 3450 | 7 老乡,我是要按列合并,不是按行阿,而且是选择性的列合并
【在 h*n 的大作中提到】 : unix上面,先back up这两个文件 : 然后 cat file1 >> file2 就行了吧。 : : of
|
e****e 发帖数: 3450 | 8 没有这个命令
【在 G****s 的大作中提到】 : copy a+b c
|
e****e 发帖数: 3450 | 9 555,偶要按列,不是按行
【在 g**t 的大作中提到】 : 你不用写什么程式,只要用cut和paste就可以了。 : 查查manpage吧,大概是: : cut -d '^VI' -f 3,4 file2 | paste file1 - : 假设你的delimiter是tab。
|
g**t 发帖数: 1872 | 10 什么叫按列?你试过没有?
【在 e****e 的大作中提到】 : 555,偶要按列,不是按行
|
|
|
e****e 发帖数: 3450 | 11 shows: cut: bad delimiter
shell
【在 g**t 的大作中提到】 : 吓,什么硅谷了?LZ,我的如果work请发包子。还有Ctrl-V-I是tab,在shell : 里要这样才可以打到tab的,否则出来是 : file completion。
|
g**t 发帖数: 1872 | 12 你是hold著Ctrl先按 V 后按 i 然后release Ctrl吗?
【在 e****e 的大作中提到】 : shows: cut: bad delimiter : : shell
|
g**t 发帖数: 1872 | 13 '^VI' 是 ' + Ctrl-V-i + '。但出来就是一个tab在单quote中。
【在 e****e 的大作中提到】 : shows: cut: bad delimiter : : shell
|
q******n 发帖数: 66 | 14 Is this what you are trying to do?
-bash-3.2$ cat file1
1_1 1_2 1_3 1_4
-bash-3.2$ cat file2
2_1 2_2 2_3 2_4
-bash-3.2$ cut -f3,4 file2 > file3
-bash-3.2$ paste file1 file3 > file4
-bash-3.2$ cat file4
1_1 1_2 1_3 1_4 2_3 2_4 |
e****e 发帖数: 3450 | 15 太牛了!exactly what I need!包子送上!
【在 g**t 的大作中提到】 : 你是hold著Ctrl先按 V 后按 i 然后release Ctrl吗?
|
h*n 发帖数: 1915 | 16 喔,没看清,那giat说的cut paste就可以了。
【在 e****e 的大作中提到】 : 老乡,我是要按列合并,不是按行阿,而且是选择性的列合并
|
b******y 发帖数: 2729 | |
g**t 发帖数: 1872 | 18 俺要猪,不要牛。谢谢你的包子了。
【在 e****e 的大作中提到】 : 太牛了!exactly what I need!包子送上!
|
e****e 发帖数: 3450 | 19 Yes, it worked! thanks! 接包子!
【在 q******n 的大作中提到】 : Is this what you are trying to do? : -bash-3.2$ cat file1 : 1_1 1_2 1_3 1_4 : -bash-3.2$ cat file2 : 2_1 2_2 2_3 2_4 : -bash-3.2$ cut -f3,4 file2 > file3 : -bash-3.2$ paste file1 file3 > file4 : -bash-3.2$ cat file4 : 1_1 1_2 1_3 1_4 2_3 2_4
|
g**t 发帖数: 1872 | |
|
|
r********3 发帖数: 2998 | 21 那个unix的man太难差了。我另外打开我的eclipse写几十行Java code去解决问题,也
不愿意用一行unix command.
【在 g**t 的大作中提到】 : 你不用写什么程式,只要用cut和paste就可以了。 : 查查manpage吧,大概是: : cut -d '^VI' -f 3,4 file2 | paste file1 - : 假设你的delimiter是tab。
|
s*****m 发帖数: 8094 | 22
python is faster to code.
【在 r********3 的大作中提到】 : 那个unix的man太难差了。我另外打开我的eclipse写几十行Java code去解决问题,也 : 不愿意用一行unix command.
|
r********3 发帖数: 2998 | 23 python感觉没有Java好用。Python的变量类型是不确定的,eclipse没办法提示一个函数
参数类型,或者一个类的成员之类。很多错误要到运行的时候才发现。
【在 s*****m 的大作中提到】 : : python is faster to code.
|
s*****m 发帖数: 8094 | 24
起好变量名很重要啊。慢慢就习惯了,调试快多了,还有interpreter可以玩。
【在 r********3 的大作中提到】 : python感觉没有Java好用。Python的变量类型是不确定的,eclipse没办法提示一个函数 : 参数类型,或者一个类的成员之类。很多错误要到运行的时候才发现。
|