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”.
davy.ai
Para crear la columna “ID” en el formato deseado, puedes usar el siguiente comando en tu script de bash:
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ónsubstr
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.