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 :
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.
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
- Linux
- Commandes Linux
- Linux élémentaire
- Shell bash Linux
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.
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