|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Inscription : février 2008 Messages : 96 ![]() |
Bonjour,
J'avais ouvert une discussion sur une methode pour substituer une chaine de caractère sur tout un fichier. le point a été résolu : http://www.developpez.net/forums/d10...r/#post6095019 Or je dois faire une modification à ce script car il se trouve que la donnée qui a été substituée, l'a été par une date format "YYYYMM". Or dans le fichier cette date est sous forme "YYYYMMDD". Le problème rencontré est sur la validité de la date lorsque le Jour = 31 et que le mois demandé ne fait que 28, 29 ou 30 jours. En somme si MM in ('01','03','05','08','10','12') ==> RAS si MM in ('04','06','09','11') substituer 31 par 30 si MM = '02' alors substituer 29, 30 ou 31 par 28 Comme puis-ja faire cela ? La commande awk existante : Code :
nawk -v IDMOIS=${idmois} '{if (/30076.*2019/ || /10468.*224[0567]/) {print substr($0,1,4) IDMOIS substr($0,11)} }' $ficold > $fic |
|
|
10
|
|
|
#2 | ||
|
Membre du Club
![]() E LInscription : juin 2011 Messages : 19 ![]() |
Si le mois sur lequel se baser est dans la variable IDMOIS, par exemple :
Code :
|
||
|
|
00
|
|
|
#3 |
|
Candidat au titre de Membre du Club
![]() Inscription : février 2008 Messages : 96 ![]() |
Bonjour et merci bien pour cette aide.
Seulement maintenant, il m'a supprimé le jour de l'ensemble des lignes. La sélection de lignes est toujours correcte, mais si nous avions 55 colonnes initialement, nous nous retrouvons avec 53 colonnes en résultat. Où se trouve l'erreur ? Merci. |
|
|
00
|
|
|
#4 |
|
Candidat au titre de Membre du Club
![]() Inscription : février 2008 Messages : 96 ![]() |
Et bien c'est fait !
IDMOIS = ANNEE+MOIS (AAAAMM) Donc il me fallait pour utiliser ton tableau, initialiser une variable MOIS MOIS = MM donc la ligne devient : avec MOIS=`echo $idmois | cut -c5,6` Code :
nawk -v IDMOIS=${idmois} -v MOIS=${mois} 'BEGIN { a["01"]=a["03"]=a["05"]=a["07"]=a["08"]=a["10"]=a["12"]=31; a["04"]=a["06"]=a["09"]=a["11"]=30; a["02"]=28; } { if (/30076.*2019/ || /10468.*224[0567]/) { jour=substr($0,11, 2); print substr($0,1,4) IDMOIS (jour < a[MOIS] ? jour : a[MOIS]) substr($0,13)} }' $ficold > $fic Bonne journée et bon WE. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com