Sommaire

Récupérer le champ d’une ligne

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 - Principe)

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 interprété puis transformé ...