Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#26 Le 10/06/2016, à 10: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, à 11: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, à 14: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, à 08:34)

Hors ligne