Les systèmes d'exploitation basés sur Linux offrent de nombreux utilitaires de traitement de texte en ligne de commande que vous pouvez utiliser dans votre routine quotidienne. La commande cut est l'un de ces utilitaires de manipulation de texte qui utilise des délimiteurs, des octets, des champs et des colonnes pour extraire une chaîne requise d'une base de données de fichiers plats ou d'une ligne.

Étant donné qu'une base de données à fichier plat n'a pas de relation structurelle et que les enregistrements sont séparés à l'aide de délimiteurs, cut est un outil idéal pour extraire des caractères ou des octets d'informations. Cet article traite de la commande de coupe en détail et montre quelques exemples pratiques avec différentes options de filtre pour vous aider à démarrer avec l'outil.

Présentation de la commande de coupe

cut utilise la syntaxe de base suivante :

Couper 

Vous pouvez également le diriger avec d'autres commandes comme suit :

echo "chaîne_de_caractères" | Couper 

Veuillez noter que l'absence d'option génère une erreur. Voici quelques drapeaux que vous pouvez utiliser avec cut pour invoquer ses différentes fonctions :

instagram viewer

Option La description
-b Coupes par position d'octet
-c Coupes par position de caractère
-ré Extrait la chaîne en utilisant le délimiteur spécifié avec l'option de champ (-f)
-F Extraits par un champ spécifié
-s Extraits pour les délimiteurs uniquement
--complément Imprimer la sortie sauf pour le champ que vous avez spécifié
--output-delimiter Remplacez le délimiteur existant par celui que vous avez spécifié

Voici quelques exemples de la commande de coupe qui vous aideront à mieux comprendre l'outil et ses fonctions.

1. Extraire des caractères spécifiques d'une chaîne

Utilisez le -b option pour récupérer des chaînes de caractères par leur nombre d'octets, comme suit :

echo "Bonjour le monde" | couper -b 1,2,3,5,8,9

Sortir:

Héloor

Vous pouvez également spécifier un chemin de fichier au lieu d'une chaîne :

cut -b 1,2,3,4,5 nomfichier.txt

Ou vous pouvez extraire des caractères selon leur position dans le texte. Utilisez le -c option suivie de la séquence/ordre des caractères que vous devez récupérer comme suit :

echo "Bonjour le monde" | couper -c 1,2,3,5,6,8,10,11

Sortir:

Helo vieux

De même, pour récupérer des champs ou des colonnes à partir d'une base de données à fichier plat, utilisez la commande cut avec la -F option drapeau :

couper -f 3 base de données.txt

2. Couper la plage d'octets ou de caractères

Vous pouvez également utiliser le -b flag avec la commande cut pour extraire et imprimer plusieurs plages d'octets comme suit :

coupe -b 1-7,16-23 base de données.txt

Vous pouvez définir la plage de récupération des caractères à l'aide de la -c drapeau comme suit :

coupe -c 1-7,16-23 base de données.txt

3. Extraire le texte des positions de début ou de fin

Utilisez le -cn- option pour extraire le texte à partir du nième caractère jusqu'à la fin de la ligne, où n est l'indice d'un caractère dans la chaîne.

Par exemple, pour extraire la chaîne à partir du sixième caractère jusqu'à la fin de la ligne :

couper -c6- base de données.txt

Ou utilisez la commande suivante pour récupérer du début au dernier m caractères du fichier :

couper -c-8 base de données.txt

4. Couper plusieurs champs d'un fichier

Vous pouvez également imprimer plusieurs champs à partir d'un fichier à l'aide de la -F drapeau.

coupe -f 1,2 base de données.txt

Sortir:

NOM AGE 
Jean 20
Lisa 24
Jacques 18
Bruce 23
Nancy 19

5. Extraire du texte à l'aide de délimiteurs

Vous pouvez utiliser le -ré flag pour spécifier le délimiteur avec le -F option. Le délimiteur spécifie le caractère utilisé pour séparer les champs dans un fichier texte.

Par exemple, pour extraire la première colonne du /etc/passwd fichier, utilisez deux-points (:) comme délimiteur :

couper -d ':' -f 1 /etc/passwd

De même, la valeur du délimiteur dans le flux de texte donné est un espace unique :

echo "Le 1% du 1%" | couper -d ' ' -f 2,3

Sortir:

1% de

6. Modifier le délimiteur de sortie pour l'affichage

le --output-delimiter flag ajoute de la flexibilité à la sortie de la commande cut. Par exemple, vous pouvez utiliser le drapeau pour afficher la sortie sur une ligne séparée en utilisant le $'\n' (nouvelle ligne), comme suit :

grep alice /etc/passwd | couper -d ':' -f 1,5,7 --output-delimiter=$'\⁠n'

Sortir:

Alice
Alice
/bin/sh

De plus, vous pouvez également remplacer un délimiteur d'un fichier d'entrée par le délimiteur de votre choix dans la sortie en utilisant le --output-delimiter drapeau:

grep racine /etc/passwd | couper -d ':' -f 1,6,7 --output-delimiter=@

Sortir:

root@/root@/bin/bash
nm-openvpn@/var/lib/openvpn/chroot@/usr/sbin/nologin

7. Couper les champs uniquement lorsqu'une ligne contient le délimiteur

Utilisez le -s flag pour extraire les champs uniquement lorsque les lignes contiennent un délimiteur. Par exemple, la commande suivante ne récupérera pas le champ -f 1 à moins qu'il n'ait un délimiteur d'espace :

echo "HelloWorld" | couper -d " " -f 1 -s

Au contraire, la commande mentionnée ci-dessous générera une sortie car la chaîne contient le délimiteur spécifié :

echo "Bonjour le monde" | couper -d " " -f 1 -s

Sortir:

Bonjour

De même, vous pouvez également utiliser n'importe quel autre caractère comme délimiteur :

echo "Bonjour: Monde" | couper -d ":" -f 2 -s

Sortir:

Monde

8. Compléter la sortie de la commande

L'utilitaire de coupe vous permet également d'imprimer tous les champs sauf le champ spécifié. Utilisez le --complément option comme suit pour récupérer tous les détails du compte utilisateur root à l'exception de la cinquième colonne :

grep "racine" /etc/passwd | couper -d ':' --complément -s -f 5

Sortir:

racine: x: 0:0:/root:/bin/bash

De même, dans l'exemple ci-dessous, le -f 1 le paramètre doit afficher Bonjour texte cependant, en raison de la --complément option, il n'imprime que le reste.

echo "Bonjour au monde entier" | couper -d " " -f 1 --complément

Sortir:

au monde entier

La meilleure partie est que vous pouvez combiner la commande cut avec la sortie standard d'autres commandes Linux/Unix.

sed est l'un de ces outils d'édition de texte que vous pouvez utiliser pour supprimer, insérer et remplacer votre texte. Vous pouvez facilement diriger sa sortie vers la commande de coupe.

Dans l'exemple ci-dessous, la commande grep la sortie est redirigée vers l'utilitaire sed qui remplace les deux-points (:) par un trait d'union (-), puis coupe les champs 1, 6 et 7 comme suit :

grep alice /etc/passwd | sed 's/:/-/g' | couper -d ' ' -f 1,5,7

Sortir:

alice-x-1005-1008-Alice-/home/nouveau/alice-/bin/sh

Travailler avec du texte sous Linux en utilisant cut

La commande cut est un utilitaire de ligne de commande flexible et efficace que vous pouvez utiliser dans divers cas d'utilisation de manipulation de texte. Il utilise des opérations pour filtrer le texte des fichiers ou des données d'entrée standard. L'utilitaire présente également un avantage permettant aux utilisateurs de limiter le texte qu'ils souhaitent afficher et d'ajouter des délimiteurs de leur choix.

Cependant, cette commande présente également certaines limitations. Vous ne pouvez pas utiliser d'expressions régulières pour spécifier un délimiteur ou utiliser plusieurs options de commande de coupe simultanées. Cet article a couvert des exemples pratiques de niveau basique à avancé de cet utilitaire pour aider les débutants à comprendre clairement les commandes de manipulation de texte sous Linux.

Les 5 commandes de manipulation de texte Linux les plus utiles

Vous voulez améliorer votre jeu Linux et en savoir plus sur la manipulation de texte? Voici les cinq meilleurs outils de ligne de commande Linux pour commencer votre voyage.

Lire la suite

PartagerTweeterE-mail
Rubriques connexes
  • Linux
  • Commandes Linux
  • Linux élémentaire
  • Shell bash Linux
A propos de l'auteur
Rumaisa Niazi (10 articles publiés)

Rumaisa est rédactrice indépendante au MUO. Elle a porté plusieurs casquettes, de mathématicienne à passionnée de sécurité de l'information, et travaille maintenant en tant qu'analyste SOC. Ses intérêts incluent la lecture et l'écriture sur les nouvelles technologies, les distributions Linux et tout ce qui concerne la sécurité de l'information.

Plus de Rumaisa Niazi

Abonnez-vous à notre newsletter

Rejoignez notre newsletter pour des conseils techniques, des critiques, des ebooks gratuits et des offres exclusives !

Cliquez ici pour vous abonner