Vous êtes en train de pondre un script, et celui-ci ne doit réutiliser qu’une portion du résultat, pour l’enregistrer dans une variable.
Mais vous ne savez pas comment faire …
voici une commande qui vous permettra d’isoler un résultat ou une chaîne de caractères depuis un script Shell sous linux : la commande cut !
L’option -c
-c comme char (caractère en anglais) : couper par caractères
cut -c5 –> Renvoie uniquement le 5e caractère de la ligne
cut -c5-10 –> Renvoie les caractère depuis la 5e à la 10e position
cut -c1,2,5 –> Renvoie le 1er, 2e et 5e caractère
cut -c5- –> Renvoie tous les caractères à partir du 5e caractère
cut -c-5 –> Renvoie tous les caractères jusqu’au 5e caractère
L’option -f
-f comme field (champ en anglais) : couper par champs
Exemple : je veux extraire le premier mot de la chaine de caractère suivante :
MONTREUIL; 93100;SEINE-SAINT-DENIS;
cut -d’;’ -f1 –> Reprend le premier champ , qui est délimité avec le caractère ;
Résultat : MONTREUIL
Exemple : je veux extraire du 2e au 3e champs de la chaine de caractère suivante (avec le séparateur tabulation):
MONTREUIL 93100 SEINE-SAINT-DENIS
cut -d -f2-3 –> -d prend le séparateur TABULATION par défaut / -f2-3 : reprend les champs 2 à 3
Résultat : 93100 SEINE-SAINT-DENIS
Exemple : je veux extraire le premier et 3e mot de la chaine de caractère suivante (avec le séparateur tabulation):
MONTREUIL 93100 SEINE-SAINT-DENIS
cut -d -f1,3 –> -d prend le séparateur TABULATION par défaut / -f2-3 : reprend les champs 2 à 3
Résultat : MONTREUIL SEINE-SAINT-DENIS
cut -d -f-2 –> f-2 affiche du premier jusqu’au 2e champs
Résultat : MONTREUIL 93100
En imaginant que le fichier liste .csv contient les valeurs suivantes en première ligne, et dont le séparateur est le « ; » :
MONTREUIL; 93100;SEINE-SAINT-DENIS;
cat liste.csv | cut -d’;’ -f2
Résultat : 93100
Si le caractère séparateur est un caractère spécial du shell, il faut le préciser avec des guillemets simples .
ligne= « MONTREUIL|93100|SEINE-SANT-DENIS »
echo $ligne | cut -d’|’ -f1
Résultat : MONTREUIL