Объединение 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 

и размер файла 10gb

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

1
задан 8 February 2017 в 13:41

1 ответ

Скрипт perl ниже читает оба файла одновременно и присоединяет каждую строку из файла a.csv к последнему элементу в b.csv. Файлы указываются в качестве аргументов в командной строке.

#!/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
ответ дан 23 May 2018 в 01:40
  • 1
    его распечатать данные, но не сказать данные в файле final.csv, какие изменения я должен делать, если я хочу сохранить этот вывод в файле final.csv – Gaurav Singh 8 February 2017 в 13:30
  • 2
    Используйте оператор перенаправления оболочки >. Я добавлю это к моему ответу через минуту – Sergiy Kolodyazhnyy 8 February 2017 в 13:49
  • 3
    @GauravSingh добавил пример – Sergiy Kolodyazhnyy 8 February 2017 в 13:51

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

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