[Perl] One-liner pour concaténer deux colonnes d'un CSV
Laurent Rosenfeld
laurent.rosenfeld at googlemail.com
Lun 12 Fév 17:41:13 CET 2018
Bonjour,
du moment que tu utilises Text::CSV, difficile de réduire cette partie là.
Du coup, la fin de la ligne peut peut-être se réécrire:
print @f[0..1].','(join ',' @f[2..3]);
Mais ça ne fait pas gagner grand-chose.
(A vérifier que tu obtiens bien la même chose).
A noter que, quand il y a une seule valeur scalaire, on n'écrit pas @f[0]
ou @f[1] , mais $f[0] et $f[1].
Bonne journée,
Laurent.
Le 12 février 2018 à 15:48, Charles Nepote <charles at nepote.org> a écrit :
> Bonjour à tous,
>
> Je cherche à concaténer *proprement* deux colonnes d'un CSV en UTF-8 avec
> un code court, lisible et sous la forme d'un one-liner.
>
> Je suis arrivé à ça (qui fonctionne) :
> perl -MText::CSV::Encoded -lne '$c=Text::CSV::Encoded->new({encoding=>utf8});
> $c->parse($_);@f=$c->fields();print (@f[0]. at f[1].",". at f[2].",". at f[3])'
> monfichier.csv
>
> Je me demandais si on peut faire plus court tout en restant lisible (j'ai
> un petit niveau en Perl).
> J'ai exclu les regexp parce que c'est très (trop) compliqué pour gérer les
> cas où il y a une virgule à l'intérieur d'un champ (qui plus es contenant
> des guillemets échappés) : colonne1,"colonne\"n°\",2",colonne3.
>
> Charles.
>
> _______________________________________________
> Perl mailing list
> Perl at mongueurs.net
> http://listes.mongueurs.net/mailman/listinfo/perl
>
-------------- section suivante --------------
Une pièce jointe HTML a été nettoyée...
URL: <http://listes.mongueurs.net/mailman/private/perl/attachments/20180212/fb10bd36/attachment-0001.html>
Plus d'informations sur la liste de diffusion Perl