0
votes

Diviser un fichier CSV spécifiant délimiteur

est-il possible de diviser un énorme fichier CSV et de spécifier le délimiteur à utiliser pour les fichiers générés futurs. Ceci est ma ligne de commande: xxx


4 commentaires

Comment utiliseriez-vous le délimiteur? Veuillez indiquer quelques échantillons de données avec la sortie attendue.


Ok je viens d'éditer mon post.


le c dans .csv signifie que les virgules, ce qui signifie qu'un csv ne contenant pas de virgules peut être déroutant, je les sauve que TXT et le Utilisez sed pour remplacer le ; . sed -i 's /, /; / g' file.txt


Il convient de noter qu'il existe de nombreux logiciels / outils permettant d'utiliser différents séparateurs avec CSV S (E.G. Excel CSV Export par exemple). Cela convient si le texte est censé avoir des virgules dans des contextes non éclairés.


3 Réponses :


1
votes

Voici un en utilisant awk. AVIS: pour le fichier fichier il crée des fichiers nommés fichier-1 , fichier-2 etc.

Il utilise des virgules comme séparateur de champ de saisie mais Existe-t-il des virgules dans les champs (c.-à-d. "entre guillemets, vous savez" ), ils seront également considérés comme des délimiteurs. Si tel est le cas, remplacer fs = "," avec fpat = "([^,] *) | (\" [^ \ "] + \") " et utilisez gnu awk. xxx

sortie ou plus de résultats similaires: xxx


2 commentaires

Ouais, juste couper de: awk ... fichier et coller. Vous pouvez également enregistrer sur programme.awk entre guillemets simples (à l'exclusion du ' s) et: awk -vl = 2 -f programme.awk fichier.awk .


Et, comme il y a une discussion sur l'utilisation de la virgule comme délimiteur, vous pouvez supprimer la ligne fs à partir du code et utiliser -f, (ou le délimiteur que vous aimez) de la Ligne de commande (si vous utilisez le FPAT , vous devez remplacer le , avec le délimiteur suivant).



1
votes

Ne réinventez pas la roue, il existe des outils pour formater des fichiers CSV.

en utilisant CSVFormat à partir du package cvskit (également nommé python-csvkit ou python3-csvkit ) p> Modifier le délimiteur en ; : xxx

ou avec des champs cotés doubles tels que dans les données d'entrée: xxx < / pré>

depuis split nommé vos fichiers de sortie xaa.csv , xab.csv etc., vous pouvez modifier vos fichiers de sortie avec une boucle comme xxx


0 commentaires

1
votes

Vous pouvez utiliser "SED" pour remplacer les devis et les virgules.

cat <csv_file_name> | sed 's/"//g' | sed 's/,/;/g'


0 commentaires