Tengo varios archivos CSV separados que son solo una lista de una sola columna de direcciones de correo electrónico, donde cada archivo representa una "etiqueta" asociada con ese correo electrónico. Me gustaría fusionarlos en un archivo CSV, de modo que todas las direcciones de correo electrónico en cualquier archivo se enumeren en la primera columna, y todas las demás columnas son los nombres de los archivos y un verdadero/falso o 1/0 si el correo electrónico está en ese archivo.
¿Qué software tendría esta función y cómo la implementaría? Tengo la última versión de Excel si eso puede hacerlo.
Perl es excelente para esto. También puede crear un sencillo bash one liner. Sin embargo, esto debería funcionar.
#!/usr/bin/env perl
use strict;
use warnings;
use Text::CSV_XS;
my $csv = Text::CSV_XS->new;
my %db, @tags;
while (my $email = <<>>) {
chomp $email;
push @tags, $ARGV;
$db{$email}{$ARGV} = 1;
}
# Header
$csv->say(*STDOUT, ["Email", map $_, @tags]);
foreach my $email (keys %db) {
$csv->say(*STDOUT, [$email, map $db{$email}{$_}//0, @tags]);
}
Si no lo tiene Text::CSV_XS
, puede instalarlo con
cpan Text::CSV_XS;
Guarde esto en un archivo, runme
, chmod u+x runme
y luego./runme *
Al final, parece que hay dos formas de manejar esto según el nivel de experiencia que tuve, que puedo compartir aquí en caso de que alguien más esté en una situación similar.
eric s
benny lewis
eric s
benny lewis
Evan Carroll