Bonjour
Soit ce script splitfi0.sh base sur awk
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 FileIn=$1 awk -v FILEIN=$1 ' BEGIN { Ctr=1 FileNameOUt OutFile=FILEIN"_"Ctr emmeteur="" type="" norme="" } { if ($1 ~ /^0128000SL/) { emmeteur = substr($0,10,20) type =substr($0,52,2) } print $0 > OutFile if ($1 ~ /^0128999SL/) { Ctr++ OutFile=FILEIN"_"Ctr"_"emmeteur"_"type } } END { print "* "Ctr" fichier(s) créés" } ' $FileIn
il se lance sous linux avec bash splitfi0.sh RGAPR693
RGAPR693 est un fichier
il contient
des éléments a extraire dans des fichiers séparés
début par 0128000SL
La dernier ligne début par 0128999SL.
il y a plusieurs lignes sous la forme
0128000SL..........................
d.............................................................................y
0128999SL..........................
0128000SL..........................
d.............................................................................y
0128999SL..........................
0128000SL..........................
d.............................................................................y
0128999SL.......................... 0128000SL..........................
d.............................................................................y
0128999SL.......................... 0128000SL..........................
d.............................................................................y
0128999SL..........................
il me faut eclater en fichier séparé les zones de la forme*
0128000SL..........................
d.............................................................................y
0128999SL..........................
L'éclatement avec la premier version fonction la voici (elle fonctionne)
Dans nouvelle version
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 FileIn=$1 awk -v FILEIN=$1 ' BEGIN { Ctr=1 FileNameOUt OutFile=FILEIN"_"Ctr emmeteur="" type="" norme="" } { print $0 > OutFile if ($1 ~ /^0128999SL/) { Ctr++ OutFile=FILEIN"_"Ctr } } END { print "* "Ctr" fichier(s) créés" } ' $FileIn
Mon soucis le premier fichier n'est pas correctement renommer.
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 FileIn=$1 awk -v FILEIN=$1 ' BEGIN { Ctr=1 FileNameOUt OutFile=FILEIN"_"Ctr emmeteur="" type="" norme="" } { if ($1 ~ /^0128000SL/) { emmeteur = substr($0,10,20) type =substr($0,52,2) } print $0 > OutFile if ($1 ~ /^0128999SL/) { Ctr++ OutFile=FILEIN"_"Ctr"_"emmeteur"_"type } } END { print "* "Ctr" fichier(s) créés" } ' $FileIn
et de plus lorsque le fichier est renommé le nommage de variable emmerdeur et type n'est pas toujours correcte.
une petite aide serait bien venu
Partager