Как найти элементы, отображаемые в двух столбцах файла с разделителями табуляции? - PullRequest
0 голосов
/ 28 февраля 2012

У меня есть файл с разделителями табуляции и двумя столбцами, A и B.

Я хочу подсчитать, сколько раз элемент в B повторяется в A. Я мог бы сделать это вExcel, но поскольку два столбца содержат более 200 тыс. Элементов, он зависает.

Я пытался с этим кодом, но он считает элементы сам по себе:

    my %counts = ();
    for (@A) {
    $count{$_}++;
    }

    foreach my $k(keys %counts) {
     print "$k\t$count{$k}\n";
    }

1 Ответ

2 голосов
/ 28 февраля 2012

Попробуйте это решение:

use strict;
use warnings;

my %countx;
my @y;

my $file = 'ab.txt';
open my $fh, '<', $file or die "Couldn't open $file";
while (my $line = <$fh>) {
    chomp $line; # remove newline

    # I've avoided using $a and $b because they are special variables in perl
    my ( $x, $y ) = split /\t/, $line;

    $countx{ $x }++;
    push @y, $y;
}
close $fh;

foreach my $y (@y) {
    my $count = $countx{ $y } || 0;
    print "$y\t$count\n";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...