J’essaie d’parsingr un fichier CSV sous UNIX en utilisant AWK ou un script shell. Mais je suis confronté à un problème ici. Si les données sont entre guillemets (“,”), je souhaite remplacer la virgule (,) par un espace vide et supprimer les guillemets. En outre, ces données peuvent se produire plusieurs fois dans un seul enregistrement.
Par exemple: Considérez cette entrée
20, Manchester, “Barclays, League”, xyz, 123, “95, certains, données”,
la sortie devrait être comme suit
20, Manchester, Barclays League, xyz, 123,95 certaines données,
Comment peut-on le faire b commandes de base UNIX ou scripting. S’il vous plaît aidez-moi à ce sujet ….
Voici comment vous le faites en utilisant sed
in shell:
sed -i '.orig' -e ':a' -e 's/^\([^"]*\)"\([^,"]*\)"\(.*\)$/\1\2\3/g' \ -e 's/^\([^"]*\)"\([^,"]*\),\([^"]*\)"\(.*\)$/\1"\2 \3"\4/;ta' file.csv