[awk] chercher et remplacer dans un colonne précise

Swiss Knight Messages postés 1956 Date d'inscription   Statut Membre Dernière intervention   -  
dna.factory Messages postés 25939 Date d'inscription   Statut Modérateur Dernière intervention   -
Salut,

J'ai dans la colonne numéro 4 d'un fichier une série de date formatées un peu à l'arrach' donc j'aimerai extraire uniquement l'année.
Les dates peuvent être sous ces formes :
1999
2009-01
2001-01-04

dans tous les cas je ne souhaite conserver que l'année :
1999
2009
2001

Je commence avec ceci :
awk -F " ; " '$4 ~ /^([0-9][0-9][0-9][0-9])(-[0-9][0-9])?-[0-9][0-9])?$/ { $4 = "\1" }'  fichier.txt


mais ça ne me retourne rien, je ne vois pas où j'ai fait une faute en plus... :(

Merci de vos éclairages si vous en avez sous la main, sinon tant pis...
Bonne nuit.
A voir également:

2 réponses

dubcek Messages postés 18788 Date d'inscription   Statut Contributeur Dernière intervention   5 633
 
hello
$ cat a2
x;x;x;1999
x;x;x;2009-01
x;x;x;2001-01-04 
$ awk 'BEGIN{FS=OFS=";"} {split($4, a, "-"); $4=a[1]; print}' a2
x;x;x;1999
x;x;x;2009
x;x;x;2001
$ 
1
dna.factory Messages postés 25939 Date d'inscription   Statut Modérateur Dernière intervention   1 618
 
awk '{print $4}' |grep '[0-9]\{4\}'
je sors :)
0