awk

Le
Ph. Ivaldi
Bonjour,

Supposons que
FUNC="bool define ( string name, mixed value [, bool case_insensitive] )"

Je voudrais mettre dans une variable shell la partie
"define ( string name, mixed value [, bool case_insensitive] )"
et dans une autre le type "bool".

Pour l'instant je procède ainsi
SIGN=$(echo $FUNC | awk '{for(k=2; k <= NF; k++) print $k}' | tr '' ' ')
TYP=$(echo $FUNC | awk '{print $1}')

Pouvez vous me donner une meilleure méthode ?

Merci,
--
Philippe Ivaldi.
http://piprim.tuxfamily.org/
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Lucas Levrel
Le #19843441
Le 28 juillet 2009, Ph. Ivaldi a écrit :
Supposons que
FUNC="bool define ( string name, mixed value [, bool case_insensitive] )"

Je voudrais mettre dans une variable shell la partie
"define ( string name, mixed value [, bool case_insensitive] )"
et dans une autre le type "bool".

Pour l'instant je procède ainsi
SIGN=$(echo $FUNC | awk '{for(k=2; k <= NF; k++) print $k}' | tr 'n' ' ')
TYP=$(echo $FUNC | awk '{print $1}')

Pouvez vous me donner une meilleure méthode ?



Tu veux dire avec awk ? Vu le titre...

Je propose sinon :
TYP=$(echo $FUNC|cut -d ' ' -f 1)
SIGN=$(echo $FUNC|cut -d ' ' -f 2-)

--
LL
Lucas Levrel
Le #19843511
Le 28 juillet 2009, Lucas Levrel a écrit :
TYP=$(echo $FUNC|cut -d ' ' -f 1)
SIGN=$(echo $FUNC|cut -d ' ' -f 2-)



On peut aussi faire en bash pur :
shopt -s extglob
TYP=${FUNC%% +([[:alpha] ])}
SIGN=${FUNC##+([[:alpha]])}

--
LL
Nicolas George
Le #19843501
Lucas Levrel wrote in message
On peut aussi faire en bash pur :
shopt -s extglob
TYP=${FUNC%% +([[:alpha] ])}
SIGN=${FUNC##+([[:alpha]])}



TYPE="${FUNC%% *}"
SIGN="${FUNC#* }"

est du sh pur.
Ph. Ivaldi
Le #19843621
Vos propositions me conviennent parfaitement.
Merci à tous les deux.
--
Philippe Ivaldi.
http://piprim.tuxfamily.org/
Lucas Levrel
Le #19846691
Le 28 juillet 2009, Nicolas George a écrit :
TYPE="${FUNC%% *}"
SIGN="${FUNC#* }"



Ah oui bien sûr ! Trop influencé par les expressions régulières, j'avais
essayé comme motifs " .*" et ".* "... Au temps pour moi.
--
LL
Publicité
Poster une réponse
Anonyme