重新排列来自多个数据文件的数据

Vij*_*jay 4 python bash perl awk fortran

我有40,000个数据文件.每个文件在单列中包含1445行浮点数.现在我需要以不同的顺序重新排列数据.

需要收集每个数据文件中的第一个数字并将其转储到新文件中(比如说abc1.dat).此特定文件(abc1.dat)将包含40,000个数字.

并且需要提取每个数据文件中的第二个数字并将其转储到另一个新文件中(假设为abc2.dat).这个新文件也将包含40,000个数字.但每个数据文件只有第二个数字.

在这个操作结束时,我应该有1445个文件(abc1.dat,abc2.dat,... abc40000.dat),每个文件包含40,000个数据.

如何实现这一目标?(使用Linux Ubuntu 11.10 - 64位)

感谢任何帮助.提前谢谢.

cho*_*oba 5

40,000*1445并不是那么多,它应该适合记忆.所以,在Perl中(未经测试):

#!/usr/bin/perl
use strict;
use warnings;

my @nums;
# Reading:
for my $file (0 .. 40_000) {
    open my $IN, '<', "file-$file" or die $!;
    while (<$IN>) {
        chomp;
        $nums[$file][$.-1] = $_;
    }
}

# Writing:
for my $line (0 .. 1444) {
    open my $OUT, '>', "abc$line.dat" or die $!;
    for my $file (0 .. 40_000) {
        print $OUT $nums[$file][$line], "\n";
    }
}
Run Code Online (Sandbox Code Playgroud)

  • @amon你也冒着失去精确度的风险,因为浮子被处理器扼杀了. (2认同)