Présentation
La cut
La commande est un utilitaire de ligne de commande qui vous permet de découper des sections d'un fichier spécifié ou de données canalisées et d'imprimer le résultat sur la sortie standard. La commande coupe des parties d'une ligne par champ, délimiteur, position d'octet et caractère.
Dans ce didacticiel, vous apprendrez ce que le cut
est la commande et comment l'utiliser.
Prérequis
- Un système exécutant Linux.
- Accès à un terminal.
couper la syntaxe de la commande
La cut
commande prend la syntaxe suivante :
cut [option] [file]
Options
Spécifier un [option]
est nécessaire. Sinon, la commande génère une erreur. Les options disponibles sont décrites dans la section suivante.
Fichier
Pour [file]
, entrez le nom du fichier que vous souhaitez traiter. Ne pas spécifier de nom de fichier indique la cut
commande pour lire depuis l'entrée standard, auquel cas cut
filtre le pipeline. Si vous spécifiez plusieurs noms de fichiers, le cut
la commande concatène le contenu demandé.
couper les options de commande
La cut
Les options de commande fournissent des instructions sur l'utilisation d'un délimiteur, le découpage par position d'octet, champ ou caractère. Utilisez une seule option pour chaque cut
commande que vous exécutez.
Les options disponibles sont :
Option | Description |
---|---|
-f (--fields=LIST) | Sélectionner à l'aide d'un champ spécifié, d'un ensemble de champs ou d'une plage de champs. |
-b (--bytes=LIST) | Sélectionner en utilisant un octet spécifié, un jeu d'octets ou une plage d'octets. |
-c (--characters=LIST) | Sélectionner en utilisant un caractère spécifié, un jeu de caractères ou une plage de caractères. |
-d (--delimiter) | Utilisé pour spécifier un délimiteur à utiliser à la place du délimiteur TAB par défaut. |
--complement | Lorsqu'elle est spécifiée, cette option indique cut pour afficher tous les octets, caractères ou champs, sauf ceux sélectionnés. |
-s (--only-delimited) | Le paramètre par défaut est d'imprimer les lignes qui ne contiennent pas de caractères délimiteurs. Spécifier le -s l'option indique à cut de ne pas imprimer les lignes qui ne contiennent pas de délimiteurs. |
--output-delimiter | Par défaut, cut utilise le délimiteur d'entrée comme délimiteur de sortie. Spécifier le --output-delimiter L'option vous permet de spécifier un délimiteur de sortie différent. |
Le -f
, b
, et -c
les options prennent la LIST
argument, qui est l'un des suivants :
- Un entier
N
représentant un octet, un champ ou un caractère, à partir de 1. - Plusieurs nombres entiers, séparés par des virgules.
- Une plage d'entiers.
- Plusieurs plages d'entiers, séparés par des virgules.
Chaque plage peut être l'une des suivantes :
N-
- Commence à partir de l'entierN
(champ, octet ou caractère) jusqu'à la fin de la ligne.N-M
- De l'entierN
jusqu'à l'entierM
, inclus.-M
- Du premier champ, octet ou caractère, jusqu'auM
spécifié champ, octet ou caractère.
Exemples de coupe Linux
Vous trouverez ci-dessous les cut
les plus courantes cas d'utilisation des commandes.
Important : Faites attention aux paramètres régionaux de la sortie du fichier/de la commande que vous traitez. Couper des caractères ou des octets dans une langue autre que l'anglais peut produire une sortie incorrecte si le caractère en question est plus long qu'un octet.
Coupé par octets
Le -b
L'option vous permet d'extraire des données en utilisant des octets. La syntaxe est :
cut -b [LIST] [file]
Le [LIST]
argument sont les octets à extraire de chaque ligne de [file]
.
Selon ce que vous voulez extraire, vous pouvez couper un seul octet, plusieurs octets ou une plage d'octets. Pour couper à partir d'un fichier spécifique, spécifiez le nom du fichier à la fin de la commande. Par exemple, nous utiliserons employees.txt pour tester :
Pour extraire le premier octet de chaque ligne d'entrée, exécutez :
cut -b 1 employees.txt
La commande imprime uniquement le premier octet de chaque ligne d'entrée de fichier.
L'exemple suivant montre comment diriger vers la commande who et extraire les 5 premiers octets de la sortie :
who | cut -b -5
Couper par caractères
Pour couper par caractères, spécifiez le -c
option. La découpe par caractères est similaire à la découpe par octets, sauf que vous devez spécifier la position du caractère plutôt que la position de l'octet. La syntaxe est :
cut -c [LIST] [file]
Le [LIST]
argument spécifie les caractères à extraire de chaque ligne de [file]
.
Par exemple :
cut -c 10- employees.txt
La commande extrait tout du caractère 10 jusqu'à la fin de la ligne de chaque ligne de employees.txt . Les résultats sont imprimés en sortie standard.
L'exemple suivant montre le résultat lorsqu'un fichier n'est pas spécifié et cut
lit son entrée à partir de l'entrée standard. Jetez un œil à who
sortie de la commande :
La sortie indique qu'un utilisateur est actuellement connecté. Utilisez le cut
commande pour extraire le nom d'utilisateur de l'utilisateur connecté du who
sortie de la commande :
who | cut -c 1-8
Dans l'exemple ci-dessus, nous demandons cut
pour extraire les caractères 1 à 8 de chaque ligne d'entrée. En cas de résultats multiples, triez les résultats en ajoutant la commande avec | sort
.
De plus, utilisez cut
pour extraire plusieurs caractères différents d'une ligne. Par exemple, affichez le nom d'utilisateur et l'heure de connexion de tous les utilisateurs connectés :
who | cut -c 1-8,18-
Couper en fonction d'un délimiteur
Si les champs ne sont pas séparés par le caractère de tabulation par défaut, utilisez le -d
option pour spécifier un délimiteur différent. Cela signifie que le caractère spécifié après le -d
L'option est considérée comme le séparateur dans les lignes. La syntaxe est :
cut -d[delimiter] [file]
A la place du [delimiter]
argument, spécifiez le délimiteur souhaité. Vous pouvez utiliser n'importe quel caractère comme délimiteur. Utilisation de la cut
commande pour extraire les champs d'un fichier sans spécifier le -d
signifie que le délimiteur par défaut est le caractère de tabulation .
Dans l'exemple suivant, nous utilisons un espace blanc comme délimiteur et imprimons le deuxième champ :
echo "phoenixNAP is a global IT services provider" | cut -d ' ' -f 2
Couper par champs
Lorsque vous dirigez vers des commandes dont la sortie n'a pas de format fixe (par exemple, le who
commande), le -c
l'option n'est pas utile. Utiliser le -f
l'option de séparation par champs est un meilleur choix dans ce cas.
Par exemple :
cut -f 2 employees.txt
Dans l'exemple ci-dessus, nous avons utilisé le -f
option pour extraire le second champ du employees.txt fichier.
Pour couper des champs spécifiques d'un fichier, spécifiez un délimiteur différent. Par exemple, le /etc/passwd
la sortie du fichier contient tous les utilisateurs de votre système, les numéros d'identification, le répertoire personnel, etc.
Les données dans /etc/passwd
le fichier n'est pas aligné de la même manière que les données dans who
sortie de commande. Ainsi, vous ne pouvez pas extraire tous les utilisateurs du système en vous appuyant sur le numéro de caractère.
Cependant, les champs du /etc/passwd
fichier sont délimités par deux-points. Par conséquent, comptez le nombre de deux-points pour extraire les mêmes champs. Par exemple :
cut -d: -f1,6 /etc/passwd
La sortie renvoie chaque utilisateur du système et son répertoire personnel, correspondant respectivement aux champs 1 et 6.
Compléter une sélection
Le --complement
L'option imprime tout sauf le caractère/octet/champ à la position spécifiée. Par exemple, la commande suivante imprime tous les champs sauf le premier et le troisième :
cut employees.txt -f 1 --complement
Spécifiez un délimiteur de sortie
Lors de la spécification de plusieurs caractères/octets/champs, le cut
La commande concatène la sortie sans délimiteur. Spécifiez un délimiteur dans la sortie à l'aide de --output-delimiter
option.
Par exemple, pour définir le délimiteur de sortie sur _
(trait de soulignement), utilisez :
cut employees.txt -f 1,3 --output-delimiter='_'