La commande cut de Linux : utilisation et exemples

La commande cut est l'un des outils de filtrage de texte présents dans Linux et UNIX.
Elle s'utilise pour extraire des colonnes spécifiques des lignes de texte. Vous passez du texte à l'aide de fichiers ou la sortie d'une autre commande à la commande cut.
Ensuite elle imprime les données à la sortie standard du terminal.
Ainsi, vous coupez une ligne par délimiteur, caractère et octet.

Dans ce tutoriel, je vous montre quelques exemples d'utilisation de la commande cut de Linux.

La commande cut de Linux : utilisation et exemples

Comment utiliser la commande cut

Le délimiteur est un espace, une tabulation, une virgule virgule, un côlon ou tout autre caractère utilisé pour séparer les mots dans une ligne.
Par exemple, un point de point est utilisé comme fichier de délimiteur dans /etc/passwd pour la séparation de différentes valeurs. Dans les fichiers CSV, la virgule est utilisée comme délimiteur.
La commande cut prend en compte l'onglet en tant que délimiteur par défaut. Donc, si votre fichier a l'onglet en tant que délimiteur, rien besoin d'utiliser -d option avec la commande CUT.

cut options [fichier]

Voici la liste des options disponible pour la commande cut :

OptionsDescription
-f (- champs)Spécifiez les champs que vous souhaitez extraire.
-c (- caractères)Spécifiez les caractères que vous souhaitez extraire.
-b (- octets)Fournissez les octets que vous souhaitez extraire.
-d (-Délimiteur)Ici, vous spécifiez le délimiteur que vous souhaitez utiliser avec la commande CUT.
Par défaut, l'onglet est considéré comme un délimiteur.
--complementIl est utilisé pour obtenir des colonnes non spécifiées par -f, -c ou -b Options.
--output-delimiterPar défaut, la commande CUT utilise le délimiteur d'entrée en tant que délimiteur de sortie,
mais vous pouvez modifier ce comportement en utilisant cette option.
Les options de la commande cut

Chaque liste est composée d'une gamme ou de nombreuses gammes séparées par des virgules.
L'entrée sélectionnée est écrite dans le même ordre qu'il est lu et est écrit exactement une fois. Chaque gamme est une de:

  • N octet, caractère ou champ, compté de 1
  • N- de N octet, caractère ou champ, à la fin de la ligne
  • N-M de N à M (inclus) octet, caractère ou champ
  • -M de première à la m (inclus) octet, caractère ou champ

Exemples d'utilisation de la commande cut

Dans ce tutoriel nous allons utiliser deux fichiers afin de donner des exemples d'utilisation de la commande cut.
Voici un fichier texte employes.txt

Riveau Alain	1919-05-22	2020-02-01	Directeur des operations
Cavalier Bart	1987-09-09	2020-09-01	Directeur des ventes
Stone Emma	1991-01-30	2021-01-02	Directrice des communication
Trembblay Guy	1962-02-02	2020-08-01	Vendeur

Un autre fichier étudiant.txt au format CSV :

S101,Pierre,91
S102,Vincent,84
S103,Laura,989

Comment extraire un champ

En utilisant l'option -f, vous pouvez spécifier les champs que vous souhaitez extraire.

cut -f 2 employes.txt
1919-05-22
1987-09-09
1991-01-30
1962-02-02

Pour afficher les champs 1 à 3 :

cut -f 1-3 employes.txt
Riveau Alain    1919-05-22      2020-02-01
Cavalier Bart   1987-09-09      2020-09-01
Stone Emma      1991-01-30      2021-01-02
Trembblay Guy   1962-02-02      2020-08-01

ou encore :

cut -f -3 employes.txt
Riveau Alain    1919-05-22      2020-02-01
Cavalier Bart   1987-09-09      2020-09-01
Stone Emma      1991-01-30      2021-01-02
Trembblay Guy   1962-02-02      2020-08-01

Pour afficher du 2e au dernier champ, vous devez taper :

cut -f 2- employes.txt
1919-05-22      2020-02-01      Directeur des operations
1987-09-09      2020-09-01      Directeur des ventes
1991-01-30      2021-01-02      Directrice des communication
1962-02-02      2020-08-01      Vendeur

ou encore :

cut -f 2-4 employes.txt
1919-05-22      2020-02-01      Directeur des operations
1987-09-09      2020-09-01      Directeur des ventes
1991-01-30      2021-01-02      Directrice des communication
1962-02-02      2020-08-01      Vendeur
Exemples d'utilisation de la commande cut

Comment couper en fonction d'un délimiteur

Par défaut, le délimiteur est la tabulation mais les fichiers peuvent utiliser d'autres séparateurs de colonnes (espace, virgule, apostrophes, ...).
Ainsi la commande vous permet de spécifier un délimiteur grâce à l'option -d.

Le fichier etudiant.txt est au format CSV, le délimiteur est la virgule.
On utilise donc l'option -d pour indiquer d'utiliser la virgule comme séparateur.

cut -d ',' -f 2 etudiant.txt
Pierre
Vincent
Laura
*

Comment compléter la sélection dans la commande cut

Supposons que vous souhaitiez sélectionner des champs qui ne sont pas spécifiés avec l'option -f, dans ce cas, utilisez l'option --complement.
Cela permet de retirer les champs d'une liste.

[email protected]:/tmp$ cut -f 1 employes.txt
Riveau Alain
Cavalier Bart
Stone Emma
Trembblay Guy

[email protected]:/tmp$ cut -f 1 --complement employes.txt
1919-05-22      2020-02-01      Directeur des operations
1987-09-09      2020-09-01      Directeur des ventes
1991-01-30      2021-01-02      Directrice des communication
1962-02-02      2020-08-01      Vendeur
Exemples d'utilisation de la commande cut

Comment spécifier le délimiteur de sortie

Pour indiquer le séparateur de sorite, utilisez l'option --output-delimiter.
Dans cet exemple, nous indiquons d'utiliser la virgule comme séparateur de sortie, ainsi, on obtient un fichier CSV en sortie.

cut -f 1,2,4 --output-delimiter=',' employes.txt
Riveau Alain,1919-05-22,Directeur des operations
Cavalier Bart,1987-09-09,Directeur des ventes
Stone Emma,1991-01-30,Directrice des communication
Trembblay Guy,1962-02-02,Vendeur

Comment extraire des champs par des caractères et des octets

Chaque personnage ASCII occupe 1 octet alors que les caractères de Unicode ont besoin d'un octet à 4 octets pour la représenter.
La plupart du temps, vous trouverez que les options -b et -c produiront le même résultat.

Par exemple, pour extraire les 3 premiers octets :

cut -b 1,2,3 employes.txt
Riv
Cav
Sto
Tre

Comme 1 caractère = 1 octet, l'utilisation de l'option -c donne le même résultat :

cut -c 1,2,3 employes.txt
Riv
Cav
Sto
Tre

Pour extraire les 10 premiers octets :

cut -b 1-10 employes.txt
Riveau Ala
Cavalier B
Stone Emma
Trembblay

Pour extraire les 10 à 20 premiers caractères :

cut -c 10-20 employes.txt
ain     1919-05
Bart    1987-0
a       1991-01-3
Guy    1962-0
Exemples d'utilisation de la commande cut

Quelques exemples d'utilisations de cut

On peut combiner la commande cut avec d'autres commandes pipe.
Pour lister les noms (première colonne) par ordre alphabétique et de manière unique :

cat employes.txt |cut -f 1|sort -n|uniq
Cavalier Bart
Riveau Alain
Stone Emma
Trembblay Guy

Si l'on veut rediriger le résultat vers un autre fichier, on utilise le caractère > suivi du nom du fichier :

cat employes.txt |cut -f 1|sort -n|uniq > nom.txt

Le séparateur du fichier /etc/passwd est :
Ainsi, si on veut extraire la première colonne soit donc la liste des utilisateurs Linux :

cut -d':' -f 1 /etc/passwd
root
daemon
bin
sys
sync
games
man
lp
mail
news
uucp
[...]

Pour afficher l'historique des commandes bash sans les chiffres.
Pour cela, on utilise la commande cut pour afficher à partir du 8e caractères.

history | cut -c 8-

Tags: