Récupérer le champ d’une ligne Découper:ligne de champs
Objectif
Récupérer le champ d’une ligne qui possède un séparateur de champs.
Exemple
Récupérer le troisième champ de la variable ligne :
$ ligne='Newton|Christine|London'
Première méthode
En utilisant la commande cut :
$ echo $ligne | cut -d'|' -f3
London
Le caractère séparateur | (option -d) doit être protégé par des apostrophes pour que le shell ne l’interprète pas comme un tube de communication.
(cf. chapitre Les commandes filtres - Traitement de données)
Deuxième méthode
En utilisant la commande awk :
$ echo $ligne | awk -F'|' '{print $3}'
London
Le caractère séparateur | (option -F) doit être protégé par des apostrophes pour que le shell ne l’interprète pas comme un tube de communication.
(cf. chapitre Le langage de programmation awk - Variables spéciales)
Troisième méthode
En utilisant la commande read du shell, avec modification de la variable IFS.
En ksh :
$ IFS="|"
$ echo "$ligne" | read nom prenom ville
$ echo $ville
London
Il ne faut pas oublier de mettre des guillemets autour de la variable ligne car elle contient le caractère | qui est maintenant un délimiteur (comme l’était l’espace auparavant). Il ne faut pas que ce caractère soit...