Problème awk en ksh

Résolu
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

  1. Contributeur
    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
    1. 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