[shell] format de date dans un fichier

Bonjour,

je voudrais changer le format de date de plusieurs fichiers, les dates sont au format :

mm/jj/aaaa et je voudrais quelles soient au format aaaammjj

tous les fichiers sont des fichiers texte, contenant 42 champs séparés par des ,

le champ qui m'interesse est le 18ème.

j'arrive a faire ce que je veux sur une ligne en faisant :

date=$(cat myfile.csv | awk -F , '{print $18}' | grep ^[0-9]); newdate=$(cat myfile.csv | awk -F , '{print $18}' | grep ^[0-9] | awk -F / '{print $3$1$2}'); cat myfile.csv | sed 's/'"$date"'/'"$newdate"'/'

le problème est que étant un grand débutant en shell je n'arrive pas a boucler ça sur la lecture de mon fichier, j'ai essayé avec while read < myfile, mais je ne m'en sors pas, merci de votre aide :)

1 réponse

  1. hello,

    auto réponse, j'ai echangé mon usine a gaz contre une substitution a base de sed, problème réglé :)
    1. Modérateur
      Salut,

      Happy for you, mais il eut été intéressant de savoir par quelle pirouette sedesque tu as remplacé ton usine à gaz ;-))
    2. tout a fait thierry, j'ai procédé de la sorte : sed 's/\(..\)\/\(..\)\/\(....\)/\3\1\2/'
      je retire ce que j'ai dit sur l'usine a gaz, sed c'est pas mal non plus dans le genre :)
    3. Modérateur
      Merci ;-))

Discussions similaires

question pix mot caché

7 réponses