Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 25/04/2008, à 09:56

iuchiban

[Résolu] Utilisation de awk avec option index et substr

Bonjour tout le monde,

Je suis en train de faire un script de surveillance de process pour le boulot.
J'ai un fichier de config qui contient des lignes du type :

DeskI_JSLAUNCH='"/apps/boe/bobje/enterprise115/generic/bobjrestart.sh" -protect "/apps/boe/bobje/enterprise115/aix_rs6000/boe_jobsd" -lib pp_procFC -jsTypeDescription  "Desktop Intelligence Job Server" -objectType CrystalEnterprise.FullClient -name parva7304173.DeskI_JS -ns parva7304173 -type MIXEDPROC -loggingPath "/apps/boe/bobje/logging" -pidFile "/apps/boe/bobje/serverpids/parva7304173.DeskI_JS_DeskIJobServer.pid" -restart -protocol default -fg'

ou

webiserver2LAUNCH='"/apps/boe/bobje/enterprise115/generic/bobjrestart.sh" -protect "/apps/boe/bobje/enterprise115/aix_rs6000/WIReportServer" -name parva7304173.webiserver2 -ns parva7304173 -service -loggingPath "/apps/boe/bobje/logging" -pidFile "/apps/boe/bobje/serverpids/parva7304173.webiserver2_WebIReportServer.pid" -restart -protocol default -fg'

De ca, je dois sortir différents champ :
- deski
- boe_jobsd
- parva7304173.DeskI_JS_DeskIJobServer.pid
puis
- webiserver2
- WIReportServer
- parva7304173.webiserver2_WebIReportServer.pid

Comme vous le voyez, les champs ont des longueurs différentes, ils peuvent ne pas être placés dans le même ordre, etc.

Pour commencer et récupérer le process à surveiller je fais :

line=<MaLigneDeTexteARallonge>
   echo "$line"
   Idx_LAUNCH=$(echo $line | awk '{print index($1, "LAUNCH")}')
   echo "L'index est : $Idx_LAUNCH"
   let "Idx_MoinsUn=$Idx_LAUNCH-1"
   echo "L'index -1 est : \"$Idx_MoinsUn\""
   echo "$line"
   echo $line | awk '{print substr($1, 1, 8)}'

Me renvoie :

DeskI_JSLAUNCH='"/apps/boe/bobje/enterprise115/generic/bobjrestart.sh" -protect "/apps/boe/bobje/enterprise115/aix_rs6000/boe_jobsd" -lib pp_procFC -jsTypeDescription  "Desktop Intelligence Job Server" -objectType CrystalEnterprise.FullClient -name parva7304173.DeskI_JS -ns parva7304173 -type MIXEDPROC -loggingPath "/apps/boe/bobje/logging" -pidFile "/apps/boe/bobje/serverpids/parva7304173.DeskI_JS_DeskIJobServer.pid" -restart -protocol default -fg'
L'index est : 9
L'index -1 est : "8"
DeskI_JSLAUNCH='"/apps/boe/bobje/enterprise115/generic/bobjrestart.sh" -protect "/apps/boe/bobje/enterprise115/aix_rs6000/boe_jobsd" -lib pp_procFC -jsTypeDescription  "Desktop Intelligence Job Server" -objectType CrystalEnterprise.FullClient -name parva7304173.DeskI_JS -ns parva7304173 -type MIXEDPROC -loggingPath "/apps/boe/bobje/logging" -pidFile "/apps/boe/bobje/serverpids/parva7304173.DeskI_JS_DeskIJobServer.pid" -restart -protocol default -fg'
DeskI_JS

Donc je récupère bien mon premier champ
Mais si je remplace

echo $line | awk '{print substr($1, 1, 8)}'

par

echo $line | awk '{print substr($1, 1, $Idx_MoinsUn)}'#sachant que Idx_MoinsUn=8

J'obtiens

awk : 0602-562 La zone $() n'est pas correcte.
Le numéro de la ligne de saisie est 1.
Le numéro de la ligne source est 1.

Pouvez vous m'indiquer la raison de cette erreur?? (je sais que vous le pouvez big_smile)

Bonne journée.

Dernière modification par iuchiban (Le 25/04/2008, à 13:47)


C'est depuis que Chuck Norris a laissé la vie sauve à un manchot que l'on dit que Linux est libre.

Chuck Norris n'a pas besoin d'éditer son premier message pour ajouter [Résolu]. Chuck Norris est toujours [Résolu], quoi qu'il arrive.

Hors ligne

#2 Le 25/04/2008, à 12:45

iuchiban

Re : [Résolu] Utilisation de awk avec option index et substr

Pas même une petite idée??

Ceci n'est pas un post d'impatience, mais consiste simplement à faire un UP dans la liste des messages récents).;)

Résolu en remplacant ma dernière ligne par :

   echo "$line $Idx_LAUNCH" | awk '{print substr($1, 1, $NF)}'

Dernière modification par iuchiban (Le 25/04/2008, à 13:46)


C'est depuis que Chuck Norris a laissé la vie sauve à un manchot que l'on dit que Linux est libre.

Chuck Norris n'a pas besoin d'éditer son premier message pour ajouter [Résolu]. Chuck Norris est toujours [Résolu], quoi qu'il arrive.

Hors ligne