2010-12-02 7 views
2

J'ai essayé de chercher une réponse mais j'ai perdu dans les questions. Fondamentalement, j'ai un script shell comme suit:sed jeton de: string délimité

#!/bin/ksh 

if [ $# -eq 1 ]; then 
    exit -1 
fi 

processInfo $1 

À ce stade, ProcessInfo retourne une chaîne de format: param1: param2: param3: param4: param5

Je veux capturer param4 dans une variable. ex: param4 = processInfo $1 | sed regex

Il semble être simple avec sed et regex mais je viens de perdre la trace. Pls aider

Répondre

2
param4=$(processInfo $1 | awk -F: '{print $4}') 
+0

Sweet. Merci pour la réponse rapide et cela a fonctionné. – Kiran

+0

SOF ne me laisse pas accepter la réponse pendant 9 minutes. – Kiran

+0

Pas de problème, content que ça a marché pour vous. Bienvenue à SO – SiegeX

2
param4=$(processInfo "$1" | cut -d':' -f 4) 
+0

réalisé plus tard que c'est beaucoup plus léger que l'awk! Merci – Kiran

0
saveIFS=$IFS 
IFS=: 
array=($(processInfo $1)) 
IFS=$saveIFS 
echo ${array[3]} 
0

Si vous n'avez pas besoin de garder les paramètres de position de scripts:

IFS=: 
set -- $(processInfo "$1") 
param4="$4"