Grep данные из нескольких файлов, а затем подать в журнал

Я хочу собрать данные из нескольких файлов, а затем объединить данные в один журнал. Мои входные файлы как таковые:

Входной файл1 (200 МГц)

Cell_a  freq_100  50
Cell_a  freq_200  6.8
Cell_b  freq_100  70

Входной файл2 (100 МГц)

Cell_a  freq_100  100
Cell_a  freq_200  10.5
Cell_b  freq_100  60

Это мой ожидаемый результат

<cell>  <freq> <value_frm__file2> <value_frm_file1> <etc>

Пример ожидаемого результата:-

Cell_a  freq_100 100 50
Cell_a  freq_200 10.5 6.8
Cell_b  freq_100 60 70 

Я могу получить значение только один раз за раз. Может кто-нибудь помочь в решении этого? Огромное спасибо!

1 ответ

Решение

Попробуй это:

#!/usr/bin/perl

use strict;
use warnings;

use feature qw(switch say);

my %record;

while (<>) {
    chomp;
    my ($cell, $freq, $num) = split " ";

    push @{$record{$cell}->{$freq}}, $num;
}

while (my ($cell, $freqs) = each %record) {
    while (my ($freq, $nums) = each %$freqs) {
        say "$cell $freq ", join(" ", @$nums);
    }
}

Запустите это так:

./t.pl input1.txt input2.txt
Другие вопросы по тегам