Слияние 2 файлов CSV

У меня есть два файла:

a.csv

12,34,56 
11,23,67

b.csv

12,34,98
11,23,43

Я хочу объединить их в final.csv:

12,34,56,98
11,23,67,43 

и размер файла составляет 10 ГБ

Я использовал csvtool но это не работает, когда размер файла является слишком большим

2
задан 8 February 2017 в 12:41

2 ответа

Те же результаты могут также быть получены с командами удара.

paste a.csv b.csv |awk -F",||\t" '{print $1","$2","$3","$6}'

код дает следующий вывод:

12,34,56,98
11,23,67,43
2
ответ дан 2 December 2019 в 01:56

Сценарий жемчуга ниже читает эти два файла одновременно и присоединяется к каждой строке из файла a.csv продлиться объект в b.csv.Files даны как аргументы на командной строке. Порядок файлов важен.

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

open(my $fh1,'<',$ARGV[0]) or die $!;
open(my $fh2,'<',$ARGV[1]) or die $!;

while( not eof($fh1) and not eof($fh2)){
    my $line1 = <$fh1>;
    my $line2 = <$fh2>;

    chomp $line1;
    chomp $line2;

    my @words2 = split(",",$line2);
    printf("%s,%s\n",$line1,$words2[-1]);

}

Тестовый прогон:

$ cat a.txt
12,34,56
11,23,67
$ cat b.txt
12,34,98
11,23,43
$ ./merge_files.pl  a.txt b.txt                                                                 
12,34,56,98
11,23,67,43

Для отправки данных в новый файл используют оператор перенаправления оболочки > как так:

./merge_files.pl  a.txt b.txt  > final.txt
3
ответ дан 2 December 2019 в 01:56

Другие вопросы по тегам:

Похожие вопросы: