[Shel Script] Awk formatage fichier texte

Résolu
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. 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. C'est BONJOUR_____________CHAMP1____CHAMP2... qu'il fallait lire
      les _ sont des espaces
      0
    2. Contributeur
      awk -F":" -v MA_VAR="BONJOUR" '{ printf "%s %10s %10s %07d%03d%04d\n",MA_VAR,$1,$2,$3,$4,$5 }'
      0
    3. J'obtiens un fichier vide
      .
      The input line number is 1. The file is MON_FIC.
      The source line number is 1.
      0
    4. Contributeur
      Montre-nous ton script, ce que tu tapes et le résultat...
      0
    5. #!/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
  2. Merci beaucoup, vous êtes énormes !
    Ca m'aide énormément, et la rapidité des réponses aussi !!!
    0
    1. Contributeur
      Salut,

      awk 'BEGIN { FS=":"}{ printf "%10s %10s %07d%03d%04d\n",$1,$2,$3,$4,$5 }'
      1
      1. 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