#26 Le 10/06/2016, à 09:42
- waduxair
Re : AWK sur une seule colonne d'un fichier csv
Voici le retour :
LANG=fr_FR.UTF-8
LC_CTYPE="fr_FR.UTF-8"
LC_NUMERIC="fr_FR.UTF-8"
LC_TIME="fr_FR.UTF-8"
LC_COLLATE="fr_FR.UTF-8"
LC_MONETARY="fr_FR.UTF-8"
LC_MESSAGES="fr_FR.UTF-8"
LC_PAPER="fr_FR.UTF-8"
LC_NAME="fr_FR.UTF-8"
LC_ADDRESS="fr_FR.UTF-8"
LC_TELEPHONE="fr_FR.UTF-8"
LC_MEASUREMENT="fr_FR.UTF-8"
LC_IDENTIFICATION="fr_FR.UTF-8"
LC_ALL=
Hors ligne
#27 Le 10/06/2016, à 10:36
- pingouinux
Re : AWK sur une seule colonne d'un fichier csv
Essayer modif_date3.py
import sys
mois={ 'JAN':'01', 'FEB':'02', 'MAR':'03',
'APR':'04', 'MAY':'05', 'JUN':'06',
'JUL':'07', 'AUG':'08', 'SEP':'09',
'OCT':'10', 'NOV':'11', 'DEC':'12',
}
def conv_date(dat):
try:
j,m,a=dat.strip('"').split('-')
m=mois[m.upper()]
ia=int(a)
ia+=2000 if ia<69 else 1900
a=str(ia)
return '"%s"'%'-'.join((j,m,a))
except ValueError: return dat
for lig in sys.stdin:
ligspl=lig[:-1].split(';')
ligspl[6]=conv_date(ligspl[6])
print(';'.join(ligspl))
À appeler ainsi
python modif_date3.py <fichier.csv
La conversion de date est ici faite à la main. Il y aura peut-être à adapter la liste des mois, en tête du script.
Hors ligne
#28 Le 10/06/2016, à 13:05
- credenhill
Re : AWK sur une seule colonne d'un fichier csv
il faut enlever les "
essayer
awk 'BEGIN {FS=OFS=";"} $7 ~ /-/ {gsub("\"", "", $7); x="date +\"\\\"%d/%m/%Y\\\"\" -d " $7;x|getline $7} {print} ' fichier.csv
ou en bash
while IFS=\; read -a t; do [[ ${t[6]} =~ - ]] && t[6]=$(date +"\"%d/%m/%Y\"" -d ${t[6]//\"/}); IFS=\; ; echo "${t[*]}"; done < fichier.csv
Dernière modification par credenhill (Le 11/06/2016, à 07:34)
Hors ligne