Isoler un résultat ou une chaîne de caractères depuis un script Shell sous linux avec cut

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

 




 

Retour