[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. 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
    1. Contributeur
      Salut,

      awk 'BEGIN { FS=":"}{ printf "%10s %10s %07d%03d%04d\n",$1,$2,$3,$4,$5 }'
      1
      1. Merci beaucoup, vous êtes énormes !
        Ca m'aide énormément, et la rapidité des réponses aussi !!!
        0
        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