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

Swiss Knight Messages postés 2257 Statut Membre -  
dna.factory Messages postés 19958 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.

--
"Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement." -A. Einsten-

2 réponses

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    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
  2. dna.factory Messages postés 19958 Date d'inscription   Statut Modérateur Dernière intervention   1 621
     
    awk '{print $4}' |grep '[0-9]\{4\}'
    je sors :)
    0