GNU/Linux >> Tutoriales Linux >  >> Linux

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

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

Salida:

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 :

Desde 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 de awk :

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

Yo haría:

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

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

O puede usar sed :

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

Linux
  1. ¿Se puede conectar un script Bash a un archivo?

  2. ¿Cómo agregar una nueva línea al final de un archivo?

  3. Bash Script:¿Comprobar si un archivo es un archivo de texto?

  4. Cómo reemplazar espacios en nombres de archivos usando un script bash

  5. Bash script:mal intérprete

35 ejemplos de secuencias de comandos Bash

buscar y copiar archivos usando Bash

¿Cómo resaltar los scripts de Bash en Vim?

¿Cómo fusionar dos archivos usando AWK?

automatizar la sesión de telnet usando scripts bash

usando awk con condiciones de valor de columna