Forum Clubic

Pb batch shell

Bonjour,
Petite question pour debutant,je souhaite faire une modification sur un fichier de données sur des champs precis tou en ne touchant pas les autres.
Je m explique j ai un certain nombre de champs comme ci dessous

          ABC ;     ESSAI-1 ;   XXXX ; 24-02-2008 08:00:01 ; 29-02-2008 05:00:04 ;  0:00:03 ; SPAB-YY ;    sft
          ABB  ;   ESSAI-1 ;  XXXX ; 26-02-2008 11:00:00 ; 28-02-2008 13:00:30 ;  0:00:30 ; SPAB -II;      cft
          ADB ;   Essai  ;   XXXX ; 28-02-2008 10:19:47 ; 28-02-2008 13:20:14 ;  0:00:30 ; SPAB-OO ;      cfl

Ce que je souhaite avoir c’est les dates sous le format 28/02/2008 au lieu de 28-02-2008 . J ai pensé utilisé la commande tr “-” “/” mais cela fait la modif sur tous les champs.
Ma question est comment puisje changer uniquement sur les champs 4 et 5 les - par des / (le shell c’est du khorn)
D’avance merci

Si tu veux intervenir à l’intérieur d’un fichgier en shell, il va falloir que tu utilises la commande FOR :
FOR /F "eol=; tokens=2,3* delims=, " %i in (monfich.txt) do etc.
ensuite que tu interviennes sur les bons champs pour les mettre en forme
et que tu rediriges le tout vers un fichier.

Tu n’a pas la possibilité de le faire en excel ?

merci pour ta reponse.
Effectivement je peux le faire sous excel mais je voulais avoir une solution automatisée avec le shell.
Je vais voir ce que ca donne sinon faudra que je fasse une macro excel.

C’est faisable en shell, mais quand même un peu lourd (N’oublie pas le setlocal enabledelayedexpansion , sinon tu auras des problèmes avec tes commandes Set à l’intérieur de ta boucle For)

Tu peux aussi utiliser les outils Unix (en version windows bien sûr).
Personnellement, pour ce genre de travail, j’emploierais awk

Avec les outils unix :

cat input | sed 's:\([0-9]*\)-\([0-9]*\)-\([0-9]*\):\1\/\2\/\3:g' > output

input etant ton fichier d’entree
output ton fichier de sortie