Problème awk en ksh

Résolu/Fermé
Nokaddict Messages postés 233 Date d'inscription mercredi 6 avril 2011 Statut Membre Dernière intervention 8 mai 2017 - 17 juin 2014 à 00:14
Nokaddict Messages postés 233 Date d'inscription mercredi 6 avril 2011 Statut Membre Dernière intervention 8 mai 2017 - 8 juil. 2014 à 04:34
Bonjour à toutes et à tous,

Etant donnée que je ne suis pas un as en programmation, je solicite de la communauté un peu d'aide.

Ce bout de programme est censé récupérer tous les users dba d'un serveur. Les données écrites en dur ne sont la qu'à titre d'exemple, elles sont normalement remplacées par des variables.

je souhaite utiliser la commande "awk" pour extraire les données d'une chaine de caractères dans l'avant dernière ligne du code ksh ci-dessous :

userdba_p="/home/logiciel/oracle/ora15903 /home/logiciel/oracle/ora16103"
integer userdba_c=2                                                        
integer a=0                                                                
set -A list $userdba_p                                                  
while [ $a -lt userdba_c ]; do                                          
 s1='echo "${list[$a]}" | sed 's/[^/]/ /g' | wc -w' #4              
 sp='expr $s1 + 1'   #5                                         
 usenam='echo ${list[$a]} | awk -F"/" '{print $sp}''
done


Je voudrais que dans "usenam", le resultat resorti soit uniquement : ora15903.

A l'avant derniere ligne, le print$ est incorecte car je ne précise pas l'emplacement. Ce dernier est définis par $sp. Or lorsque j'indique directement $sp dans print, le résultat retourné est :

/home/logiciel/oracle/ora15903


Alors que lorsque j'indique "en dur" $5, ça fonctionne.

J'ai essayé avec $$sp, ça ne fonctionne pas.

Je remercie par avance ceux qui auront pris le temps de bien vouloir m'aider.

3 réponses

Nokaddict Messages postés 233 Date d'inscription mercredi 6 avril 2011 Statut Membre Dernière intervention 8 mai 2017 24
17 juin 2014 à 00:29
Jme répond à moi même, mais ça aidera peux être ceux qui ont eu/auront le même problème.

Il faut mêtre "print $NF".

Bonne soirée
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
17 juin 2014 à 10:06
hello
ou aussi
$ userdba_p="/home/logiciel/oracle/ora15903 /home/logiciel/oracle/ora16103"
$ echo "$userdba_p" | awk 'BEGIN {RS="[ \n]"; FS="/"} {print $NF}'
ora15903
ora16103
0
Nokaddict Messages postés 233 Date d'inscription mercredi 6 avril 2011 Statut Membre Dernière intervention 8 mai 2017 24
8 juil. 2014 à 04:34
Aussi
0