Problème avec commande awk : lecture puis modification zone dans un fichier
Bonjour,
N'étant pas "un professionnel" des commandes shell/unix je vous expose mon problème en espérant être assez clair.
J'écris un script qui lit un fichier en entrée pour récupérer une zone ($7) puis je souhaite scripter cette zone et recopier le fichier en entrée dans un nouveau fichier avec cette même zone mise à jour (scriptée).
Mais je rencontre le message suivant dans mon script shell :
awk: Field is not correct.
The input line number is 1.
The source line number is 1.
Voici mon script :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| vCheminFXOT=/fic/stbc${instance}/00Y/FXOT
vFicOut=${vCheminFXOT}/FicEntree.csv
echo $vFicOut
cat ${vFicOut} | while read ligne
do
echo "Ligne : " $ligne
matricule=`echo $ligne | awk -F"\|" '{print $7}'`
echo "matricule : " $matricule
cryptage=$(printf $matricule | openssl dgst -binary -sha256 | openssl base64)
echo "cryptage : " $cryptage
echo $ligne | awk -F"|" 'BEGIN{OFS="|"} {$7=$cryptage} {print $0}' >> FicSortie.csv
echo "Ligne MAJ : " $ligne
done
exit |
-------------------
Exemple de ligne dans mon fichier et ce que je souhaite ==> cryptage
Code:
1 2 3
| Ligne : 01.00.00|BCMP_A|C_ACCUEIL_PHYSIQUE|NC||170817|1234567899999|19620902|1|54|NC|M|691|01|1234567899999|19620902|1|54|NC|M|CONTACT|CONTACT|NC|NC|3452755690|NC
matricule : 1234567899999
cryptage : AwOnndlQG77RqLrHEXr3NiuCef+DAjca2cEip6f2zxE= |
------------------
Auriez-vous une idée ?
Merci pour votre aide...
Problème avec commande awk : lecture puis modification zone dans un fichier
Bonjour,
Merci à vous tous pour votre aide, j'ai testé la formule de "disedorgue" qui marche très bien d'autant plus que je ne traite pas des millions de lignes je suis sur environ 150000 rows.
Comme merci...
Cordialement
Problème avec commande awk : lecture puis modification zone dans un fichier
Désolé, je vous relance sur le sujet car j'ai testé sur un fichier plus conséquent (55000rows) et le traitement est assez long... (20min)
Auriez-vous une solution pour optimiser le script si possible sans changer de langage ?
Merci.
Code:
1 2 3 4 5 6 7 8 9 10
| echo $vFicOut
cat ${vFicOut} | while read ligne
do
matricule=`echo $ligne | awk -F"\|" '{print $7}'`
cryptage=$(printf $matricule | openssl dgst -binary -sha256 | openssl base64)
echo $ligne | awk -F"|" -vcryptage="$cryptage" 'BEGIN{OFS="|"} {$7=cryptage} {print $0}' >> FicSortie.csv
done
exit |
Problème avec commande awk : lecture puis modification zone dans un fichier
Bonjour,
Merci pour vos réponses, le langage est effectivement une contrainte... Je vais voir si je peux faire autrement
Merci