Bonjour,

Je fais à nouveau appel à vos services pour l'écriture d'un script shell qui permettra de récupérer certaines informations issues d'un fichier (dont je ne maitrise pas la structure lorsqu'il est mis à disposition) avec en entrée 2 variables permettant d'identifier la bonne ligne.

La structure du fichier est la suivante :

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
 
PART01;09/11/2017;VGPA$BAS;  5221068;  3258186;62;                         ^@^@^@^@^@^@^@
PART01;09/11/2017;VGPEFLUX;   146160;   142760;98;                         ^@^@^@^@^@^@^@
PART01;09/11/2017;VGPADBAS;  1234218;  1003108;81;                         ^@^@^@^@^@^@^@
PART01;09/11/2017;VGPUNL  ;  1875720;  1482572;79;                         ^@^@^@^@^@^@^@
PART02;09/11/2017;VGBOMNUR;   406000;   327503;81;                         ^@^@^@^@^@^@^@
PART02;09/11/2017;VGBOMRUR;  1063720;   857238;81;                         ^@^@^@^@^@^@^@
PART02;09/11/2017;VGPEDADS;   186760;   186145;>>;                         ^@^@^@^@^@^@^@
PART02;09/11/2017;VGPEFLUX;    48720;    14959;31;                         ^@^@^@^@^@^@^@
PART02;09/11/2017;VGPEINST;   113680;   100291;88;                         ^@^@^@^@^@^@^@
PART02;09/11/2017;VGPUNL  ;   170520;   170156;>>;                         ^@^@^@^@^@^@^@
PART02;09/11/2017;VGPERSVE;  3320956;  3316008;>>;                         ^@^@^@^@^@^@^@
PART02;09/11/2017;VGPESAVE;   730800;   596829;82;                         ^@^@^@^@^@^@^@
PART03;09/11/2017;VGPEUSER;    73080;    17711;24;                         ^@^@^@^@^@^@^@
PART03;09/11/2017;VGPEWORK;   138040;   124329;90;                         ^@^@^@^@^@^@^@
PART03;09/11/2017;VGPPCTRL;   267959;    92553;35;                         ^@^@^@^@^@^@^@
PART03;09/11/2017;VGPEFLUX;   438472;   217562;50;                         ^@^@^@^@^@^@^@
PART03;09/11/2017;VGPUNL  ;  3507696;  3503934;>>;                         ^@^@^@^@^@^@^@
PART03;09/11/2017;VGPVTS  ;---------;---------;--;                         ^@^@^@^@^@^@^@
PART03;09/11/2017;VGPVTS9 ;---------;---------;--;                         ^@^@^@^@^@^@^@
Mes critères permettant d'identifier la bonne ligne se font sur la colonne et 1 et 3.

J'ai commencé à traiter l'identification de la ligne à l'aide de la commande AWK mais je suis confronté à un problème sur les champs contenant des blancs en fin de chaîne sur la troisième colonnes.


Commande d'identification de la ligne du fichier :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
LIGNE=$(awk -F";" -v SERVEUR=$PART -v SERVICE=$STOG '{IGNORECASE=1} $1==SERVEUR && $3==SERVICE {print $0}' $FILE)
Lorsqu'il n'y a pas de blanc en fin de chaine sur la troisième colonne, je récupère bien les informations :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
PART="PART03"
STOG="VGPPCTRL"
FILE="/tmp/FICSTORAGE"
 
LIGNE=$(awk -F";" -v SERVEUR=$PART -v SERVICE=$STOG '{IGNORECASE=1} $1==SERVEUR && $3==SERVICE {print $0}' $FILE)
echo "LIGNE ==> $LIGNE"
 
LIGNE ==> PART03;09/11/2017;VGPPCTRL;   267959;    92553;35;
Mais lorsque j'effectue la même commande avec des blancs dans le champ, je ne récupère aucune valeur !

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
PART="PART03"
STO="VGPUNL"
FILE="/tmp/FICSTORAGE"
 
LIGNE=$(awk -F";" -v SERVEUR=$PART -v SERVICE=$STOG '{IGNORECASE=1} $1==SERVEUR && $3==SERVICE {print $0}' $FILE)
echo "LIGNE ==> $LIGNE"
 
LIGNE ==>
Auriez-vous une idée pour ne pas tenir compte des blancs lors de ma recherche ?


Vous remerciant par avance.