[Shell] : récupération de variable via awk

: récupération de variable via awk [Shell] - Shell/Batch - Programmation

Marsh Posté le 02-03-2009 à 12:02:27    

Bonjour,
 
- Je voudrais récuperer deux champs dans deux variables avec awk.
 
je l'ai fait en deux fois :  
 
 echo "${ligne}" | awk -F"," '{print $1}' | read var1
             echo "${ligne}" | awk -F"," '{print $2}' | read var2
 
est-ce qu'on peut le faire en une seule ligne ?
j'ai essayé :  
 echo "${ligneFormat}" | awk -F"," '{ print $1 $2}' | read var1 var2
mais $1 et $2 sont concaténé dans var1  
 
- ma deuxième question : est-ce qu'on peut avec le "awk" récupérer des variables (comme ci-dessus) toute en les supprimant de la ligne ?
ligne : 1,2,3,4
récupérer les valeurs 3 et 4 dans deux variables et avoir en sortie le fichier ligne : 1,2
 
 
Merci bcp pour votre aide
 
 

Reply

Marsh Posté le 02-03-2009 à 12:02:27   

Reply

Marsh Posté le 02-03-2009 à 14:56:25    

Voici deux solutions :

# Solution avec awk
ligneFormat="abc,qsd"
echo "${ligneFormat}" | awk -F"," '{ printf("%s %s", $2,$1)}' | read var1 var2
echo "var1="$var1
echo "var2="$var2
#
# Solution avec cut
var1=`echo ${ligneFormat}|cut -d',' -f1`; var2=`echo ${ligneFormat}|cut -d',' -f2`
echo "var1="$var1
echo "var2="$var2

(testé sous Unix Borne shell Solaris)

Reply

Marsh Posté le 02-03-2009 à 15:04:40    

Merci pour ton aide

Reply

Marsh Posté le 02-03-2009 à 17:12:03    

Note quand même que c'est dommage d'utiliser awk quand tu peux te contenter de faire :

IFS=,
echo "$ligne" | read var1 var2

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed