[Shel Script] Awk formatage fichier texte

Résolu
Dipsou -  
zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
Je suis en train de créer un script qui normalement devrait formater un fichier qui a la tête suivante :
CHAMP1:CHAMP2:123:4:567

L'objectif est d'arriver à un format fixe sans séparateur :
CHAMP1 CHAMP2 00001230040567

Mon script est le suivant :
awk 'BEGIN { FS=":" ;
OFS=":" ;
printf "%10s %10s %07d %03d %04d\n",$1,$2,$3,$4,$5
}
' OLD_FIC > NEW_FIC

Et j'obtiens dans mon NEW_FIC une ligne avec :
000000000000000000000

???
Je ne comprends pas ou ça peche...

Pourriez vous m'aider ?
Merci beaucoup

4 réponses

  1. Utilisateur anonyme
     
    salut,

    tu as oublié de refermer le bloc BEGIN.
    awk -F: '{ printf("%10s %10s %07d%03d%04d\n",$1,$2,$3,$4,$5) }'
    qui n'est pas utile ici.
    1
  2. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    Salut,

    awk 'BEGIN { FS=":"}{ printf "%10s %10s %07d%03d%04d\n",$1,$2,$3,$4,$5 }'
    1
  3. Dipsou
     
    Merci beaucoup, vous êtes énormes !
    Ca m'aide énormément, et la rapidité des réponses aussi !!!
    0
  4. Dipsou
     
    Encore une petite question,
    si je souhaite ajouter une chaine dans mon fichier ?
    Par exemple :
    MA_VAR="BONJOUR"
    awk 'BEGIN { FS=":"}{ printf "%20s %10s %10s %07d%03d%04d\n",${MA_VAR},$1,$2,$3,$4,$5 }'

    Pour obtenir
    BONJOUR CHAMP1 CHAMP2....

    Ca plante (awk: 0602-562 Field $() is not correct.)

    Merci d'avance
    0
    1. Dipsou
       
      C'est BONJOUR_____________CHAMP1____CHAMP2... qu'il fallait lire
      les _ sont des espaces
      0
    2. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      awk -F":" -v MA_VAR="BONJOUR" '{ printf "%s %10s %10s %07d%03d%04d\n",MA_VAR,$1,$2,$3,$4,$5 }'
      0
    3. Dipsou
       
      J'obtiens un fichier vide
      .
      The input line number is 1. The file is MON_FIC.
      The source line number is 1.
      0
    4. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Montre-nous ton script, ce que tu tapes et le résultat...
      0
    5. Dipsou
       
      #!/bin/ksh

      awk -F":" -v REQ="INSERT INTO TABLE_RESULTAT " '{ printf("%s %31s %15s %20s %07d%011d%03d%011d%011d\n",REQ,$1,$2,$3,$4,$5,$6,$7) }' OLD_FIC > NEW_FIC

      The input line number is 1. The file is 20111207084335_408.
      The source line number is 1.

      Merci
      0