Nom du script: ident
Compatible avec: Bash

Descriptif: extraction de données

Pré-requis: aucun

Code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
000MA      02241000B65D05MU00000055222333      RP      091015687 000NU            128      201509                               
0100155222333@
07002020915@
150111111111@


pourquoi sur la commande "
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
while read Ligne_FIC_IN;
do
echo $Ligne_FIC_IN 
....
 done  < $FIC_IN
",

on passe du texte suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
000MA      02241000B65D05MU00000055222333      RP      091015687 000NU            128      201509
a ce text
Code : Sélectionner tout - Visualiser dans une fenêtre à part
000MA 02241000B65D05MU00000055222333 RP 091015687 000NU 128 201509

pourquoi des espaces disparaissent ?????