Saltar al contenido

Agregar columna al final del archivo CSV usando ‘awk’ en el script BASH

Fabián, miembro de este gran equipo de trabajo, nos hizo el favor de escribir este artículo porque conoce perfectamente el tema.

Solución:

Puede agregar una coma a OFS (Separador de campo de salida):

awk -F"," 'BEGIN  OFS = ","  $6="2012-02-29 16:13:00"; print' input.csv > output.csv

Producción:

2012-02-29,01:00:00,Manhatten,New York,234,2012-02-29 16:13:00
2012-02-29,01:00:00,Manhatten,New York,843,2012-02-29 16:13:00
2012-02-29,01:00:00,Manhatten,New York,472,2012-02-29 16:13:00
2012-02-29,01:00:00,Manhatten,New York,516,2012-02-29 16:13:00

EDITAR para responder al comentario de SirOracle:

De awk página man:

       -v var=val
       --assign var=val
              Assign the value val to the variable var, before execution of the program begins.  Such 
              variable values are available to the BEGIN block of an AWK program.

Así que asigna tu fecha a una variable de shell y úsala dentro awk:

mydate=$(date)
awk -v d="$mydate" -F"," 'BEGIN  OFS = ","  $6=d; print' input.csv > output.csv

Lo haría:

awk ' printf("%s,2012-02-29 16:13:00n", $0); ' input.csv > output.csv

Esto codifica el valor, pero también lo hace su código.

O puedes usar sed:

sed 's/$/,2012-02-29 16:13:00/' input.csv > output.csv

Puede configurar el OFS (separador de campo de salida):

awk -F"," 'BEGIN  OFS = ","  ; $6="2012-02-29 16:13:00" OFS $6; print' input.csv >output.csv

que me da:

2012-02-29,01:00:00,Manhatten,New York,234,2012-02-29 16:13:00,
2012-02-29,01:00:00,Manhatten,New York,843,2012-02-29 16:13:00,
2012-02-29,01:00:00,Manhatten,New York,472,2012-02-29 16:13:00,
2012-02-29,01:00:00,Manhatten,New York,516,2012-02-29 16:13:00,

Nos puedes defender nuestra faena ejecutando un comentario y puntuándolo te damos las gracias.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *