[Shel Script] Awk formatage fichier texte [Résolu/Fermé]

Signaler
-
zipe31
Messages postés
38013
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
20 janvier 2020
-
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

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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 80629 internautes nous ont dit merci ce mois-ci

Messages postés
38013
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
20 janvier 2020
4496
Salut,

awk 'BEGIN { FS=":"}{ printf "%10s %10s %07d%03d%04d\n",$1,$2,$3,$4,$5 }'
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 80629 internautes nous ont dit merci ce mois-ci

Merci beaucoup, vous êtes énormes !
Ca m'aide énormément, et la rapidité des réponses aussi !!!
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
#!/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
zipe31
Messages postés
38013
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
20 janvier 2020
4496
Tu as 9 champs dans le printf et seulement 8 variables à afficher ;-(
Merci beaucoup, mea culpa !!!
Un petit dernier, après j'arrête :
CHAMP1 est un nombre qui doit être considéré comme une chaine et donc être aligné à gauche. Or, il s'aligne à droite :
Au lieu de
123_____4567
J'obtiens
_____1234567

Y a t'il un moyen d'aligner champ1 à gauche ?

Merci d'avance
C'est bon, trouvé, c'était le -
Merci beaucoup pour votre aide.

Bonne journée
zipe31
Messages postés
38013
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
20 janvier 2020
4496
%-10s ?