0
votes

Comment changer de délimiteur d'un fichier CSV

Je dois modifier le délimiteur d'un fichier CSV de la virgule (,) en tuyau (|) Symbole.

Remarque: Ici, le séparateur de fichiers est également à l'intérieur de la chaîne de données. J'ai besoin de sauter cette valeur j'ai essayé une commande, mais cela change d'initié une virgule d'initiée awk '$ 1 = 1' fs = "fs =", "ofs =": ​​"Sample.csv code> (j'ai essayé cela mais pas Sortie attendue) p>

entrée> Sample.csv p> xxx pré>

sortie> sample_out.csv doit être comme. P>

Col1| Col2| Col3|Col4
101 | XYZ | 2020 | "Hello, World"
102 | PQR |2021 | "Help, Me"


1 commentaires

Voici une solution python si vous n'avez pas de chance Stackoverflow.com/a/21527170/2836621


3 Réponses :


0
votes

awk code> est pour le traitement de texte brut et ne peut donc pas gérer des virgules dans des guillemets. Au lieu de cela, vous devez utiliser des outils conçus pour CSV comme csvtool code>: xxx pré>

de csvtool code> doc: p>

-t séparateur d'entrée Char. P>

Séparateur de sortie -UN Char. P> blockQuote>

chat p>

Ceci concaténe les fichiers d'entrée ensemble et les écrit à le résultat. Vous pouvez l'utiliser pour changer le caractère du séparateur. P>

 Example: csvtool -t TAB -u COMMA cat input.tsv > output.csv


0 commentaires

0
votes

Vous devez faire des actions pour prendre soin de ces virgules citées. Vous pouvez commencer à changer en quelque chose d'autre: xxx

alors vous pouvez modifier les virgules restantes en ce que vous voulez: xxx

et vous changez. le § dans les virgules avant son xxx

Je pense que vous pouvez créer un fichier AWK et mettre toutes les étapes à cela.


0 commentaires

0
votes

Essayez ceci, la manipulation spéciale de citations doubles est nécessaire, alors divisez les champs avec celui-ci, de traiter le champ alternatif et remplacez la virgule au tuyau.

Col1| Col2| Col3 | Col4
101| XYZ| 2020 | "Hello, World"
102| PQR| 2021| "Help, Me"


0 commentaires