使用perl从多个制表符分隔文件中提取列

时间:2014-05-09 02:57:54

标签: perl

文件1,2和3有很多列,我需要从特定文件中提取特定列,例如文件1中的前3列,文件2中的第3列和文件3中的第3列,并保存另一个文件。 注意:文件名不固定,但要提取的列是固定的

my @file = <> 
my @OA = ();

foreach my $line (@file)
{
        my @temp = split(/\t/, trim($_));
        push(@OA, $temp[0] . "\t" . $temp[1] . "\t" . $temp[2] . "\n");
}

这有助于从单个文件中提取数据。 任何人都可以帮助我扩展它以从文件2中获取列等等。

谢谢, Ñ

1 个答案:

答案 0 :(得分:0)

这里有一个关于如何并行处理多个文件句柄的存根:

#!/usr/bin/perl 

use strict;
use warnings;
use autodie;

my @fhs;
for my $file (qw(file1.txt file2.txt file3.txt)) {
    open my $fh, '<', $file;
    push @fhs, $fh;
}

while (! grep eof, @fhs) {
    my @lines = map {scalar <$_>} @fhs;
    chomp @lines;

    print "fh0 = $lines[0]\n";
    print "fh1 = $lines[1]\n";
    print "fh2 = $lines[2]\n";
}