[Shel Script] Awk formatage fichier texte

Résolu/Fermé
Dipsou - 7 déc. 2011 à 09:23
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 7 déc. 2011 à 11:02
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
A voir également:

4 réponses

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
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 418
7 déc. 2011 à 09:34
Salut,

awk 'BEGIN { FS=":"}{ printf "%10s %10s %07d%03d%04d\n",$1,$2,$3,$4,$5 }'
1
Merci beaucoup, vous êtes énormes !
Ca m'aide énormément, et la rapidité des réponses aussi !!!
0
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
C'est BONJOUR_____________CHAMP1____CHAMP2... qu'il fallait lire
les _ sont des espaces
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 418
7 déc. 2011 à 10:07
awk -F":" -v MA_VAR="BONJOUR" '{ printf "%s %10s %10s %07d%03d%04d\n",MA_VAR,$1,$2,$3,$4,$5 }'
0
J'obtiens un fichier vide
.
The input line number is 1. The file is MON_FIC.
The source line number is 1.
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 418
7 déc. 2011 à 10:27
Montre-nous ton script, ce que tu tapes et le résultat...
0
#!/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