Sed est ses mystères Quand les espaces disparaissent
Nom du script: ident
Compatible avec: Bash
Descriptif: extraction de données
Pré-requis: aucun
Code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
| #!/bin/ksh
#***************************************************************************
#* Parametres *
#***************************************************************************
#Variable :
NOW=`date +"%Y%m%d%H%M%S"`
#Arborescence serveur :
DIR=${HOME}/utils/ID_doublon
DIR_LOG=${DIR}/log
FIC_LOG=${DIR_LOG}/identific_doublon_$NOW.log
DIR_SQL=${DIR}/sql
FIC_RES=${DIR}/donnees_fichier_doublon.csv
$i=0
# Verification de la presence des parametres de lancement
if [ $# -ne 1 ];
then
echo " ==> Veuillez entrer le nom du fichier a analyser suivi de la norme " >> $log
exit 9
fi
# Acquisition des parametre
FIC_IN=$1
echo "Demarrage de la mise au format du flux " >> ${FIC_LOG}
rm CodeSQL_*.sql
echo "Fichier :"$FIC_IN
while read Ligne_FIC_IN;
do
#echo $Ligne_FIC_IN
#extraction des donnees de la ligne de type 000
echo $Ligne_FIC_IN > typ000.txt
entite=`cut -c 1-3 typ000.txt`
#echo "ENTITE-->"$entite
if [ $entite == "000" ];
then
echo "Ligne_FIC_IN :"$Ligne_FIC_IN
numemet=`cut -c 6-19 typ000.txt`
echo "numemet: "$numemet
numdest=`cut -c 28-41 typ000.txt`
typapp=`cut -c 48-49 typ000.txt`
normeps=`cut -c 62-64 typ000.txt`
else
niveau=`cut -c 4-5 typ000.txt`
if [ $entite == "999" ];
then
echo "FIN de fichier-->"$entite
else
if [ $entite == "990" ] && [ $niveau == "02" ];
then
#echo "ENTITE-->"$entite"/"$niveau
noecpt=`cut -c 23-30 typ000.txt`
noecum=`cut -c 31-41 typ000.txt`
#creer le fichier de sortie sql
else
if [ $entite == "010" ];
then
mut010=`cut -c 6-13 typ000.txt`
fi
if [ $entite == "007" ] && [ $niveau == "02"];
then
jcodate=`cut -c 6-11 typ000.txt`
fi
fi
fi
fi
done < $FIC_IN
echo "Fin de la mise au format du flux " > ${FIC_LOG}
echo " " >> ${FIC_LOG}
echo "Fin du script : " `date +"%d/%m/%Y %H:%M:%S"` >> ${FIC_LOG} |
------------------------------------------------
résultat
soit le Fichier :fic2.err fichier utilisé avec comme contenu:
Code:
1 2 3 4
| 000MA 02241000B65D05MU00000055222333 RP 091015687 000NU 128 201509
0100155222333@
07002020915@
150111111111@ |
pourquoi sur la commande "
Code:
1 2 3 4 5
| while read Ligne_FIC_IN;
do
echo $Ligne_FIC_IN
....
done < $FIC_IN |
",
on passe du texte suivant :
Code:
000MA 02241000B65D05MU00000055222333 RP 091015687 000NU 128 201509
a ce text
Code:
000MA 02241000B65D05MU00000055222333 RP 091015687 000NU 128 201509
pourquoi des espaces disparaissent ?????