Tengo un conjunto de archivos csv (alrededor de 250), cada uno con 300 a 500 registros. Necesito cortar 2 o 3 columnas de cada archivo y almacenarlo en otro. Estoy usando ubuntu OS. ¿Hay alguna forma de hacerlo en comando o utilidad?cómo cortar columnas de csv
Respuesta
Si sabe que el delimitador de columna no se produce dentro de los campos, puede usar cortar.
$ cat in.csv
foo,bar,baz
qux,quux,quuux
$ cut -d, -f2,3 < in.csv
bar,baz
quux,quuux
Puede usar el shell buildin 'for' para recorrer todos los archivos de entrada.
Si los campos pueden contener el delimitador, debe encontrar una biblioteca que pueda analizar archivos CSV. Normalmente, los lenguajes de scripting de propósito general incluirán un módulo CSV en su biblioteca estándar.
Ruby: require 'csv'
Python: import csv
Perl: use Text::ParseWords;
Si sus campos contienen comas o saltos de línea, se puede utilizar un programa de ayuda que escribí para permitir corte (y otras herramientas de procesamiento de texto UNIX) para trabajar correctamente con los datos.
https://github.com/dbro/csvquote
Este programa encuentra caracteres especiales dentro de los campos citados, y temporalmente los reemplaza con los caracteres no imprimibles que no confundirán al programa de corte. Luego se restauran después de que el corte está hecho.
solución Lutz' se convertiría en:
csvquote in.csv | cut -d, -f2,3 | csvquote -u
Sí, funcionó muy bien para mí: https://stackoverflow.com/questions/17199311/how-to-delete-a-column-columns-of-a-csv-file-which-has-cell-values-with una cadena/29134579 # 29134579 – nono
Si utilizó ssconvert
para obtener el CSV puede probar:
ssconvert -O 'separator="|"' "file.xls" "file.txt"
Aviso del extensión TXT lugar CSV, de esta manera se use Gnumeric_stf: stf_assistant exportador en lugar de Gnumeric_stf: stf_csv, que le permite usar opciones (parámetro -O
). De lo contrario, obtendrá un El protector de archivos no toma el error de las opciones. El carácter de la tubería es mucho más improbable, pero es posible que desee comprobarlo antes.
A continuación, puede cambiar el nombre de él y hacer cosas como:
cat file.csv | cut -d "|" -f3 | sort | uniq -c | sort -rn | head
- Otras opciones ejemplo:
-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. ventanas para cortar columnas de un texto
- 2. ¿Cómo dividir csv cuyas columnas pueden contener,
- 3. cómo usar una coma en columnas csv
- 4. Cómo cortar la primera y la última n columnas?
- 5. MySQL importar datos CSV - ignorar algunas columnas csv
- 6. Eliminando columnas en un CSV con python
- 7. Cortar cadena en java
- 8. ¿Cómo uso Scala para analizar datos CSV con columnas vacías?
- 9. Cómo 'cortar' en nulo?
- 10. Cómo cortar NSMutableArray
- 11. Cómo cortar una cadena
- 12. Cómo cortar varias columnas de varios archivos e imprimir la salida en diferentes archivos
- 13. Buscar número de columnas en el archivo csv
- 14. Python: Comparación de columnas específicas en dos archivos CSV
- 15. Bash: ordenar el archivo csv por las primeras 4 columnas
- 16. PHP: ¿cómo 'cortar' mi matriz?
- 17. Python: Análisis en archivos CSV 100,000 líneas x 40 columnas
- 18. Eliminar "" de los valores de csv y cambiar los nombres de las columnas al escribir en un CSV
- 19. Cómo cortar palabras especificadas de la cadena
- 20. Cómo cortar una matriz de estructuras?
- 21. cortar los últimos caracteres
- 22. ¿Cómo escribo datos en un archivo csv en columnas y filas de una lista en python?
- 23. Cómo cargar un archivo csv grande con columnas de tipo mixto usando el paquete bigmemory
- 24. ¿Cómo puedo cortar y cortar rápidamente los archivos de datos grandes?
- 25. Cómo eliminar filas o columnas vacías finales
- 26. Imprimir encabezado CSV con Tie :: Handle :: CSV
- 27. ¿Importación csv de PostgreSQL desde una exportación csv de MySQL?
- 28. Cómo cortar decimal en Java SIN redondear?
- 29. ¿Cómo puedo cortar (1) palabras en camello?
- 30. ¿Cómo cortar la onda transportadora en Rspec?
Puede procesar todos los archivos con algo así como: encontrar "* .csv" | xargs cut -d, -f2,3> out.csv – pixelbeat
Puedes usar la opción '--output-delimiter = STRING' de' cut' si quieres deshacerte de la coma o cambiarla por otra cosa. –
El principal problema con esta respuesta es que 'cut' no maneja los campos entrecomillados que incluyen el delimitador. Si su archivo CSV tiene datos que hacen esto, necesitará usar algo más. –