Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Perl在csv文件中合并多行_Perl_Csv - Fatal编程技术网

如何使用Perl在csv文件中合并多行

如何使用Perl在csv文件中合并多行,perl,csv,Perl,Csv,请帮助我写一个代码,将合并一个csv文件的行。我的csv文件如下所示 output.csv abc,1,2,3,4,5 abc,3,5,60,3 abc,4,5,6 def,2,5,6,7 def,3,4,5,6 output.csv abc,1,2,3,4,5 abc,3,5,60,3 abc,4,5,6 def,2,5,6,7 def,3,4,5,6 这只是一个例子。我的csv文件数据每次都在不断变化。因此,它不限于abc(3行)或def(2行)。 请帮助我放置代码,以便我的csv文件显示

请帮助我写一个代码,将合并一个csv文件的行。我的csv文件如下所示

output.csv abc,1,2,3,4,5 abc,3,5,60,3 abc,4,5,6 def,2,5,6,7 def,3,4,5,6 output.csv abc,1,2,3,4,5 abc,3,5,60,3 abc,4,5,6 def,2,5,6,7 def,3,4,5,6 这只是一个例子。我的csv文件数据每次都在不断变化。因此,它不限于abc(3行)或def(2行)。 请帮助我放置代码,以便我的csv文件显示如下所示:

output.csv abc,1,2,3,4,5,3,5,60,3,4,5,6 def,2,5,6,7,3,4,5,6 output.csv abc,1,2,3,4,5,3,5,60,3,4,5,6 def,2,5,6,7,3,4,5,6
我尝试使用Text::csv读取csv并尝试哈希。但当我试图将数组转换为散列时,我遇到了麻烦。我有点困惑。请帮我解决。

假设第一个字段不包含逗号:

perl -nle '
    ($key,$vals) = /^([^,]+),(.*)/;
    push @{$final_lines{$key}},$vals;
    END{
        for $key (sort keys %final_lines){
            print join ",",$key,@{$final_lines{$key}}
        }
    }
' < input_file > output_file
perl-nle'
($key,$vals)=/^([^,]+),(.*)/;
推送{$final_line{$key},$vals;
结束{
对于$key(排序关键字%最终行){
打印联接“,”,$key,@{$final_行{$key}
}
}
“output\u file”

假设第一个字段不包含逗号:

perl -nle '
    ($key,$vals) = /^([^,]+),(.*)/;
    push @{$final_lines{$key}},$vals;
    END{
        for $key (sort keys %final_lines){
            print join ",",$key,@{$final_lines{$key}}
        }
    }
' < input_file > output_file
perl-nle'
($key,$vals)=/^([^,]+),(.*)/;
推送{$final_line{$key},$vals;
结束{
对于$key(排序关键字%最终行){
打印联接“,”,$key,@{$final_行{$key}
}
}
“output\u file”
#/usr/bin/perl
严格使用;
使用警告;
我的%hash;
打开我的$ifh、、'output.csv'或die$!;
而(){
咀嚼;
我的@F=split/,/;
我的$key=shift@F;
push@{$hash{$key}},@F;
}
foreach(排序键%hash){
打印$ofh“$”.join(“,”,@{$hash{$})。“\n”;
}
关闭$ifh;
关闭$ofh;
#/usr/bin/perl
严格使用;
使用警告;
我的%hash;
打开我的$ifh、、'output.csv'或die$!;
而(){
咀嚼;
我的@F=split/,/;
我的$key=shift@F;
push@{$hash{$key}},@F;
}
foreach(排序键%hash){
打印$ofh“$”.join(“,”,@{$hash{$})。“\n”;
}
关闭$ifh;
关闭$ofh;
这里是另一个选项:

use strict;
use warnings;

my %hash;
while (<>) {
    $hash{$1} .= $2 if /(.+?)(,.+)/;
}

print "$_$hash{ $_ }\n" for sort keys %hash;
希望这有帮助

还有一个选择:

use strict;
use warnings;

my %hash;
while (<>) {
    $hash{$1} .= $2 if /(.+?)(,.+)/;
}

print "$_$hash{ $_ }\n" for sort keys %hash;

希望这有帮助

我们想看看你的代码我们想看看你的代码