このソリューションがあなたのニーズに合っているかどうかはわかりません。そうだといい。これは、最初の4つと最後の3つを除くすべてのフィールドをスペースperl
で囲んで結合するスクリプトです。-
非標準のモジュールを使用しているため、または同様のツールText::CSV_XS
を使用してインストールする必要があります。CPAN
内容infile
:
"Email Address","First Name","Last Name","State","Training","Suppression","Events","MEMBER_RATING","OPTIN_TIME","CLEAN_CAMPAIGN_ID"
"scott@example.com","Scott","Staph","NY","Campaigns and activism","Social Media","Fundraiser",1,"2012-03-08 17:17:42","Training"
内容script.pl
:
use warnings;
use strict;
use Text::CSV_XS;
my $csv = Text::CSV_XS->new({
allow_whitespace => 1,
});
open my $fh, q[<], $ARGV[0] or die qq[Open: $!\n];
while ( my $row = $csv->getline( $fh ) ) {
my $concat = join q[ - ], (@$row)[4 .. @$row-4];
splice @$row, 4, scalar @$row - (3 + 4), $concat;
$csv->print( \*STDOUT, $row );
print qq[\n];
}
次のように実行します。
perl script.pl infile
次の出力で:
"Email Address","First Name","Last Name",State,"Training - Suppression - Events",MEMBER_RATING,OPTIN_TIME,CLEAN_CAMPAIGN_ID
scott@example.com,Scott,Staph,NY,"Campaigns and activism - Social Media - Fundraiser",1,"2012-03-08 17:17:42",Training