Recuperer le dernier mots (korn shell)

tuco -  
dubcek Messages postés 19021 Statut Contributeur -
Bonjour tt lmonde,

j'ai besion de developper un scrit qui reçoi un ensemble de parametres en entrée et j'aimerai récupérer le dernier mots dans un message texte représenté par l'un des paramètres (on va dire $3). je doit développer le script en .ksh

merci

3 réponses

dubcek Messages postés 19021 Statut Contributeur 5 637
 
hello
echo $3 | awk '{print $NF}'
affiche le dernier mot de $3
0
tuco
 
merci bcp dubcek pr ta reponse, ça marche
j'aimerai savoir si tu pouvai m'aider sur mon script
o fait, le script reçoi plusieur parametres:
$1 --> "aaa/zzz/eee rrr|tttt 5 : yyy|uuu/iii/ooo|ppp|qqq(sss) = 23"
$2 --> "1" ou "2" ou "3"
$3 --> "true"
.
.
. (d'autres parametres)

je voudrai recuperer du $1 : "ooo" "5" "qqq(sss)" et "23" (pour 23 c'est la reponse que tu ma donné)
et pour $2 transformer "1" en "yes", "2" en "NO" et "3" en "maybe"

et metre tous ceci dans un tableau qui s'affiche a l'execution du script
--------------------------------------------
date | host | a | b | c | d | e |
------------------------------------------
| | | | | | |

l'ordre n'est pas important

merci

cdlt
0
dubcek Messages postés 19021 Statut Contributeur 5 637
 
hello
enlever l'espace après et avant [ ]

echo "aaa/zzz/eee rrr|tttt 5 : yyy|uuu/iii/ooo|ppp|qqq(sss) = 23" | awk '{split($5, x, "[ /\| ]") ; print x[4], $3, x[6], $NF}'
ooo 5 qqq(sss) 23

echo $2 | awk '/1/ {s="yes"} ; /2/ {s="NO" } ; /3/ {s="maybe"}  ; END{print s}'
0
tuco
 
ça ma beaucoup aidé, merci
jai une ptite question sur le tableau
comment fair pour attribuer un nombre de caractere à une colone,
je m'explique: je veu par exemple mettre un nombre dans une case d'un tableu, et je ne sais pas de combien de chiffres est composé, (exp "5" ou "3654" ou "23" ), les case d'une ligne sont separé par "|" et je ne veu pas que "|" dépasse si j'ai un nombre de 3 ou 4 caractere

merci
0
dubcek Messages postés 19021 Statut Contributeur 5 637
 
x=3
printf("%5d\n", x)

x s'affche sur 5 position

echo | awk '{x=1 ; y=123 ; printf("%5d|%5d\n",x,y)}'
    1|  123
0