J'ai un ensemble de fichiers csv (environ 250), chacun ayant 300 à 500 dossiers. J'ai besoin de couper 2 ou 3 colonnes de chaque fichier et de le stocker dans un autre. J'utilise ubuntu OS. Y at-il un moyen de le faire dans le commandement ou l'utilité?comment couper des colonnes de csv
Répondre
Si vous savez que le délimiteur de colonne ne se trouve pas dans les champs, vous pouvez utiliser cut.
$ cat in.csv
foo,bar,baz
qux,quux,quuux
$ cut -d, -f2,3 < in.csv
bar,baz
quux,quuux
Vous pouvez utiliser le shell shellin 'for' pour effectuer une boucle sur tous les fichiers d'entrée.
Si les champs peuvent contenir le délimiteur, vous devez trouver une bibliothèque capable d'analyser les fichiers CSV. Généralement, les langages de script généraux incluent un module CSV dans leur bibliothèque standard.
Ruby: require 'csv'
Python: import csv
Perl: use Text::ParseWords;
Si vos champs contiennent des virgules ou des sauts de ligne, vous pouvez utiliser un programme d'aide je l'ai écrit pour permettre coupé (et d'autres outils de traitement de texte UNIX) pour fonctionner correctement avec les données.
https://github.com/dbro/csvquote
Ce programme trouve des caractères spéciaux dans les domaines cités, et les remplace temporairement avec des caractères non imprimables qui ne confondra pas le programme de coupe. Ensuite, ils sont restaurés après la coupe est terminée.
lutz » solution deviendrait:
csvquote in.csv | cut -d, -f2,3 | csvquote -u
Oui cela a très bien fonctionné pour moi: https://stackoverflow.com/questions/17199311/how-to-delete-a-column-columns-of-a-csv-file-which-has-cell-values-with -a-string/29134579 # 29134579 – nono
Si vous avez utilisé ssconvert
pour obtenir le CSV, vous pouvez essayer:
ssconvert -O 'separator="|"' "file.xls" "file.txt"
Notez que le TXT l'extension à la place CSV, cette façon utiliser Gnumeric_stf: stf_assistant exportateur au lieu de Gnumeric_stf: stf_csv, qui vous permet d'utiliser les options (paramètre -O
). Sinon, vous obtiendrez un L'économiseur de fichier ne prend pas les options erreur. Le personnage de pipe est beaucoup plus improbable, mais vous pourriez vouloir vérifier avant.
Ensuite, vous pouvez le renommer et faire des choses comme:
cat file.csv | cut -d "|" -f3 | sort | uniq -c | sort -rn | head
- Autres options de exemple:
-O 'eol=unix separator=; format=preserve charset=UTF-8 locale=en_US transliterate-mode=transliterate quoting-mode=never'
. - A solution with AWK v4+.
ssconvert
man page.
- 1. Comment exporter des colonnes de texte 'lookal date' vers csv
- 2. Association de colonnes CSV + Dropdownlist
- 3. Comment couper deux polygones?
- 4. Comment couper toute l'application flexible?
- 5. Comment empêcher Hibernate de couper les chaînes?
- 6. champ CSV problème delimiter
- 7. Comment combiner des colonnes de 2 bits
- 8. Comment obtenir des valeurs distinctes des colonnes?
- 9. Comment envoyer des fichiers CSV à des courriels spécifiques?
- 10. Supprimer des colonnes de GridView
- 11. Rails - boucle CSV (exportation vers CSV)
- 12. Comment couper complètement l'appel de l'action d'un contrôleur de rails
- 13. Couper l'espace blanc avec PHP?
- 14. Format de date CSV
- 15. Comment personnaliser le comportement de "couper" dans Eclipse?
- 16. Comment transformer des lignes en colonnes
- 17. SQL dynamique Pivot - comment commander des colonnes
- 18. Comment parcourir sur des colonnes d'une image?
- 19. HTML comment passer à travers des colonnes
- 20. Comment couper une chaîne en sous-chaînes de longueur donnée
- 21. Convertir DataTable en flux CSV
- 22. télécharger des données de .csv avec plusieurs feuilles de calcul
- 23. comment redimensionner des colonnes dans datagridview?
- 24. Comment lire et écrire des fichiers CSV en utilisant WPF?
- 25. Python Web-Scrape Loop via la liste CSV des URL?
- 26. IE Couper à gauche de DIV
- 27. Affichage des colonnes sélectionnées
- 28. analyse syntaxique des fichiers CSV arrière
- 29. mysql import csv problème
- 30. mysql sélectionner des lignes impliquant csv
Vous pouvez traiter de manière évolutive tous les fichiers avec quelque chose comme: trouver "* .csv" | xargs cut -d, -f2,3> out.csv – pixelbeat
Vous pouvez utiliser l'option '--output-delimiter = STRING' de' cut' si vous voulez vous débarrasser de la virgule ou la changer en quelque chose d'autre. –
Le principal problème de cette réponse est que 'cut' ne gère pas les champs entre guillemets qui incluent le délimiteur. Si votre fichier CSV contient des données, vous devrez utiliser autre chose. –