I have a CSV file with three comma-delimited fields that looks like this:
THIS_IS_A_RECORD,email1domain.com;,email@domain.com;
,,email@domain.com;
,,email@domain.com;
,,email@domain.com;
,,email@domain.com;
,,email@domain.com;
,,email@domain.com;
ANOTHER_RECORD,email1domain.com;,email@domain.com;
,,email@domain.com;
,,email@domain.com;
,,email@domain.com;
,,email@domain.com;
,,email@domain.com;
,,email@domain.com;
,,email@domain.com;
,,email@domain.com;
,,email@domain.com;
,,email@domain.com;
,,email@domain.com;
,,email@domain.com;
I would like to merge the rows so my output looks like this:
THIS_IS_A_FIELD,email1domain.com;,email@domain.com;email@domain.com;email@domain.com;email@domain.com;email@domain.com;email@domain.com;email@domain.com;
ANOTHER_FIELD,email1domain.com;,email@domain.com;email@domain.com;email@domain.com;email@domain.com;email@domain.com;email@domain.com;email@domain.com;email@domain.com;email@domain.com;
The third field from the ,,email@domain.com;
rows should be appended to the end of the last complete record. My goal is to import the output into a MySQL database.
Given your dataset, the following will do what you want:
perl -pe 'chomp; print "\n" if /^[^,]/ && $. > 1; s/,//g if /^,/' inFile > outFile
Hope this helps!
awk -F, '
length($1) {if (line) print line; line=""}
{line = line $0}
END {if (line) print line}
' file
You may like this solution. It assumes nothing about which columns (after the first) contain email addresses.
use strict;
use warnings;
my %data;
my @labels;
while (<>) {
chomp;
my ($label, @emails) = split /,/;
@emails = grep $_, @emails;
push @labels, $label if $label;
push @{ $data{ $labels[-1] } }, @emails if @labels;
}
print join(',', $_, @{ $data{$_} }), "\n" for @labels;
output
THIS_IS_A_RECORD,email1domain.com;,email@domain.com;,email@domain.com;,email@domain.com;,email@domain.com;,email@domain.com;,email@domain.com;,email@domain.com;
ANOTHER_RECORD,email1domain.com;,email@domain.com;,email@domain.com;,email@domain.com;,email@domain.com;,email@domain.com;,email@domain.com;,email@domain.com;,email@domain.com;,email@domain.com;,email@domain.com;,email@domain.com;,email@domain.com;,email@domain.com;
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.