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

Fermé
Swiss Knight Messages postés 1956 Date d'inscription samedi 22 novembre 2008 Statut Membre Dernière intervention 27 juillet 2016 - 23 mai 2013 à 22:58
dna.factory Messages postés 25347 Date d'inscription mercredi 18 avril 2007 Statut Modérateur Dernière intervention 14 novembre 2024 - 24 mai 2013 à 10:10
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 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 620
Modifié par dubcek le 24/05/2013 à 08:30
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 25347 Date d'inscription mercredi 18 avril 2007 Statut Modérateur Dernière intervention 14 novembre 2024 1 613
24 mai 2013 à 10:10
awk '{print $4}' |grep '[0-9]\{4\}'
je sors :)
0