GNU/Linux >> Tutoriels Linux >  >> Linux

Ajouter une colonne à la fin du fichier CSV en utilisant 'awk' dans le script BASH

Vous pouvez ajouter une virgule à OFS (Séparateur de champ de sortie) :

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

Sortie :

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

MODIFIER pour répondre au commentaire de SirOracle :

À partir de awk page de manuel :

       -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.

Alors assignez votre date à une variable shell et utilisez-la dans awk :

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

Je ferais :

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

Cela code la valeur en dur, mais votre code aussi.

Ou vous pouvez utiliser sed :

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

Linux
  1. Un script Bash peut-il être accroché à un fichier ?

  2. Comment ajouter une nouvelle ligne à la fin d'un fichier ?

  3. Comment appeler une fonction Bash dans le script Bash à l'intérieur d'Awk ?

  4. rechercher et copier un fichier à l'aide de Bash

  5. Comment mettre en surbrillance les scripts Bash dans Vim ?

35 exemples de scripts bash

Utilisation de la commande Linux Basename dans les scripts Bash

Script bash :mauvais interpréteur

Comment fusionner deux fichiers avec AWK ?

automatiser la session telnet à l'aide de scripts bash

Comment ajouter un travail crontab à crontab à l'aide d'un script bash ?