Salut à tous,
Je dois faire un script ksh qui doit faire la chose suivante.
1 - prendre en paramètres d'entrée un fichier
2 - compter les lignes de ce fichier
3 - sélectionner une partie de chaque ligne, qui sont des chiffres, et en faire la somme.
Vu comme ça, de loin, je m'étais dit "Ok, ça à l'air tout ballot", même si je suis pas spécialisé dans ça.
Hop, après quelques rafraichissements et des lectures de man et autres docs, j'arrive à faire les étapes 1- et 2-.
Par contre, à l'étape 3-, là ça part en sucette et je pige pas bien pourquoi.
Pour le moment, j'ai ça
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 #!/bin/ksh echo "Nom du fichier traité: $1" typeset var ligne #typeset var montant NBLIGNE=`awk 'END {print NR}' $1` echo $NBLIGNE cat $1 | while read ligne do test=$ligne echo $test | cut -c 76-91 done
Le fichier en entrée contient des lignes formatées de la même façon.
Voici son contenu
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 EBC_INIT000001 E0593105111 U593 200206001 000000000000000 000000000000000 EBC_INIT000001 E0593105111 U593 200212001 000000000000000 000000000028862 EBC_INIT000001 E0593105111 U593 200306001 000000000028862 000000000158512 EBC_INIT000001 E0593105111 U593 200506001 000000000158512 000000009353118 000000000158512 EBC_INIT000001 E0593105111 U593 200602001 000000009353118 000000009353118 000000009353118 EBC_INIT000001 E0593105111 U593 200603001 000000009353118 000000009353118 000000009353118 EBC_INIT000001 E0593105112 U593 200206001 000000031310329 000000031100564 EBC_INIT000001 E0593105112 U593 200212001 000000031310329 000000031056610 EBC_INIT000001 E0593105112 U593 200306001 000000031056610 000000002018306 EBC_INIT000001 E0593105112 U593 200312001 000000031056610 000000001823567 EBC_INIT000001 E0593105112 U593 200406001 000000001823567 000000001823567 000000002018306 EBC_INIT000001 E0593105112 U593 200412001 000000001823567 000000001823567 000000001823567 EBC_INIT000001 E0593105112 U593 200506001 000000001823567 000000000000000 000000001823567 EBC_INIT000001 E0593105112 U593 200512001 000000001823567 000000000000000 000000001823567 EBC_INIT000001 E0593105113 U593 200206001 000000000000000 000000000209765 EBC_INIT000001 E0593105113 U593 200212001 000000000000000 000000000000000 EBC_INIT000001 E0593105113 U593 200306001 000000000000000 000000028908654 EBC_INIT000001 E0593105113 U593 200312001 000000000000000 000000029103393 EBC_INIT000001 E0593105113 U593 200406001 000000029103393 000000000000000 000000028908654 EBC_INIT000001 E0593105113 U593 200412001 000000029103393 000000000000000 000000029103393 EBC_INIT000001 E0593105113 U593 200506001 000000000000000 000000000000000 000000000000000 EBC_INIT000001 E0593105113 U593 200512001 000000000000000 000000000000000 000000000000000 EBC_INIT000001 E0593105310 U593 200212001 000000001174632 EBC_INIT000001 E0593121992 U593 200702001 000000000000000 000000000000000 000000000000000 000000000000000
On m'a dit dans ma doc: "Extraits les caractères 91 à 106 de chaque ligne"
Déjà, allez savoir pourquoi, je sias pas comment sont comptés les espaces et/ou tabulation, mais en vrai, ce qui m'intéresse, c'est pas de 91 à 106, mais de 76 à 91 (d'où le cut -c 76-91)
Donc je lance mon script.
Et là:
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 Nom du fichier traité: EBC_INIT_593.dat 24 00000000158512 00000009353118 00000009353118 00000002018306 00000001823567 00000001823567 00000001823567 00000028908654 00000029103393 00000000000000 00000000000000
Comme vous pouvez le constater, y a des trous et il manque des valeurs.
Il devrait y avoir au début
Or, on passe directement à
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 000000000000000 000000000028862 00000000158512
Code : Sélectionner tout - Visualiser dans une fenêtre à part 00000000158512
Idéalement, ca devrait me donner ça
Et en fait, ça me donne ça
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 Nom du fichier traité: EBC_INIT_593.dat 24 000000000000000 000000000028862 000000000158512 000000009353118 000000009353118 000000009353118 000000031100564 000000031056610 000000002018306 000000001823567 000000001823567 000000001823567 000000000000000 000000000000000 000000000209765 000000000000000 000000028908654 000000029103393 000000000000000 000000000000000 000000000000000 000000000000000 000000001174632 000000000000000
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 Nom du fichier traité: EBC_INIT_593.dat 24 00000000158512 00000009353118 00000009353118 00000002018306 00000001823567 00000001823567 00000001823567 00000028908654 00000029103393 00000000000000 00000000000000
Donc voilà, je comprends pas.
Si quelqu'un à une idée, ca serait super.
Partager