Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

awk

5 réponses
Avatar
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 '\n' ' ')
TYP=$(echo $FUNC | awk '{print $1}')

Pouvez vous me donner une meilleure méthode ?

Merci,
--
Philippe Ivaldi.
http://piprim.tuxfamily.org/

5 réponses

Avatar
Lucas Levrel
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
Avatar
Lucas Levrel
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
Avatar
Nicolas George
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.
Avatar
Ph. Ivaldi
Vos propositions me conviennent parfaitement.
Merci à tous les deux.
--
Philippe Ivaldi.
http://piprim.tuxfamily.org/
Avatar
Lucas Levrel
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