es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Edición de archivo CSV con script de Bash

Tengo un archivo CSV que se ve así:

Inglés, "Hawkin, Jason" ,JHAWKIN110@exampleemail.com
Inglés, "McDonald, Matt" ,MMCDONALD114@exampleemail.com
Inglés, "Campbell, Josh" ,JCAMPBELL111@exampleemail.com

Mi intención es crear un script de Bash para hacer un segundo archivo CSV con el siguiente formato:

ID, Email, NOMBRE, APELLIDO
jhawkin110, JHAWKIN110@exampleemail.com, Jason, Hawkin

Después de usar “cut” para eliminar la primera columna que no necesitaba, no sé cómo crear el “ID” extrayendo la primera parte del “Email”.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para crear la columna “ID” en el formato deseado, puedes usar el siguiente comando en tu script de bash:

    awk -F', *' '{split($3,a,"@"); printf("%s, %s, %s, %s\n", tolower(a[1]), $3, $2, substr($1, 2, length($1)-2))}' input.csv > output.csv
    

    Explicación:

    • awk es una poderosa herramienta de procesamiento de texto que se puede utilizar para manipular columnas y filas en archivos CSV.
    • -F', *' establece el separador de campos como una coma seguida de cero o más espacios.
    • split($3,a,"@") divide la tercera columna (es decir, la dirección de correo electrónico) por “@”, y almacena la primera parte como un elemento de array “a[1]”.
    • tolower(a[1]) convierte la primera parte de la dirección de correo electrónico a minúsculas, según el formato deseado.
    • $3, $2, substr($1, 2, length($1)-2) imprime el correo electrónico, el apellido y el nombre en el orden deseado, utilizando la función substr para eliminar las comillas alrededor del apellido.
    • > output.csv redirige la salida a un nuevo archivo CSV llamado “output.csv”.

    Este comando debería producir el archivo CSV de salida deseado con la columna “ID” en el formato especificado.

Comments are closed.