/

11 febrero, 2022

Editar archivos .csv grandes sin que se bloquee el ordenador

editar-csv-grande

En este artículo vamos a explicaros un truco para poder editar archivos .csv grandes.

En ocasiones necesitamos extraer ciertas filas o columnas de inmensos archivos csv.

Lo más seguro es que si intentas abrir un archivo .csv con millones de filas y decenas de columnas que ocupa varios Gigas (nosotros lo hemos realizado con archivos de hasta 7.5GB), el programa con el que lo intentes abrir se bloquee e incluso que se cuelgue el ordenador.

Se trata del comando AWK

Como podrás ver se tiene que realizar por línea de comandos, pero no te asustes no es tan difícil como puede parecerte si no estas familiarizado con la terminal de MAC.

Lo primero ves a la lupa superior derecha en tu MAC, escribe «Terminal» y haz click en la aplicación terminal.app

Desde el navegador ves hasta donde esté el csv original que quieras editar.

Si no sabes navegar por la linea de comandos simplemente arrastra el archivo csv a la ventana y te mostrará la dirección completa del archivo.

Una vez sabes la dirección del archivo lo puedes editar con el comando AWK.

Extraer columnas de un archivo .csv a otro .csv

Por ejemplo, si quieres extraer solo determinadas columnas de un CSV a otro CSV nuevo el código que tendrías que ejecutar sería similar a:

awk -F "\",\"" '{print $2",",$3",",$18",",$42","}' ruta-completa-archivo-original.csv > nuevo_archivo_limpio.csv

En este ejemplo se extraerían las columnas 2, 3, 18 y 42 de un archivo llamado ruta-completa-archivo-original.csv separado por , (comas) al archivo nuevo_archivo_limpio.csv también separado por , (comas).

Solo tendrías que saber el número de las columnas que deseas extraer. Para esto con el siguiente comando mastrará solo las primeras 20 lineas del csv:

awk 'NR < 20 {print}' ruta-completa-archivo-original.csv

Este es solo un ejemplo para editar archivos enormes sin problemas en excel, open office o incluso directamente en el editor de textos, Visual Studio o similar.

Pero el comando awk tiene muchísimas más funcionalidades ya que awk no es solo un comando. Es un lenguaje de secuencias de comandos que se puede usar tanto desde la terminal como desde el archivo awk. Es compatible con la variable, la declaración condicional, la matriz, los bucles, etc., como otros lenguajes de secuencias de comandos.

Puede leer el contenido de cualquier archivo línea por línea y separar los campos o columnas en función de un delimitador específico.

También admite la expresión regular para buscar una cadena en particular en el contenido de texto o archivo y toma medidas si encuentra alguna coincidencia.

Comparte este artículo y sé parte de la corriente de creatividad, innovación y diseño en las redes sociales.

Si te ha inspirado lo que has leído, compártelo con tu mundo.

LinkedIn
Facebook
WhatsApp
Skype
Telegram
Email
Twitter