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 :
Mes critères permettant d'identifier la bonne ligne se font sur la colonne et 1 et 3.
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 ;---------;---------;--; ^@^@^@^@^@^@^@
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 :
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 LIGNE=$(awk -F";" -v SERVEUR=$PART -v SERVICE=$STOG '{IGNORECASE=1} $1==SERVEUR && $3==SERVICE {print $0}' $FILE)
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" 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;
Auriez-vous une idée pour ne pas tenir compte des blancs lors de ma recherche ?
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 ==>
Vous remerciant par avance.
Partager