En tant qu’utilisateurs de Linux, nous interagissons régulièrement avec les fichiers texte. L’une des opérations courantes que nous effectuons sur ces fichiers est le filtrage de texte. Linux fournit de nombreux utilitaires de ligne de commande pour le filtrage de texte, tels que – grep, fgrep, sed, awk, et la liste continue.
Cependant, dans ce guide, nous aborderons un autre utilitaire de filtrage de texte appelé couper, qui est utilisé pour supprimer une section particulière de la ligne d’entrée. La commande cut effectue un filtrage en fonction de la position de l’octet, du caractère, du champ et du délimiteur.
Dans ce guide du débutant, nous découvrirons les commande de coupe avec des exemples dans la ligne de commande Linux. Après avoir suivi ce guide, les utilisateurs de la ligne de commande Linux pourront utiliser efficacement la commande cut dans leur vie quotidienne.
couper la syntaxe de la commande
La syntaxe de la commande de coupe est comme n’importe quelle autre commande Linux :
$ cut <OPTIONS>... [FILE-1] [FILE-2] ...
Dans la syntaxe ci-dessus, le crochet angulaire (<>)
représente les arguments obligatoires alors que le crochet ([])
représente les paramètres facultatifs.
Maintenant que nous connaissons la syntaxe de commande de coupe. Ensuite, créons un exemple de fichier à utiliser comme exemple :
$ cat file.txt
1. Imprimer le premier octet du fichier
Le couper La commande nous permet d’extraire le texte en fonction de la position de l’octet à l’aide de la commande -b
option.
Utilisons la commande ci-dessous pour extraire le premier octet de chaque ligne du fichier :
$ cut -b 1 file.txt
Dans cet exemple, nous pouvons voir que le couper La commande affiche uniquement le premier caractère car tous les caractères ont une longueur d’un octet.
2. Imprimer plusieurs octets de fichier
Dans l’exemple précédent, nous avons vu comment sélectionner un seul octet du fichier. Cependant, la commande cut nous permet également de sélectionner plusieurs octets à l’aide de la virgule.
Utilisons la commande ci-dessous pour sélectionner les quatre premiers octets du fichier :
$ cut -b 1,2,3,4 file.txt
Dans cet exemple, nous avons sélectionné les octets consécutifs mais ce n’est pas obligatoire. Nous pouvons utiliser n’importe quelle position d’octet valide avec le couper commande.
3. Imprimer une plage d’octets de fichier
Dans l’exemple précédent, nous avons utilisé des virgules pour sélectionner des octets consécutifs. Cependant, cette approche n’est pas adaptée si l’on veut sélectionner un grand nombre d’octets consécutivement. Dans de tels cas, nous pouvons utiliser le trait d’union (-)
pour spécifier la plage d’octets.
Pour comprendre cela, utilisons le 1-12 comme plage d’octets pour sélectionner les douze premiers octets de chaque ligne :
$ cut -b 1-12 file.txt
De la même manière, nous pouvons également sélectionner une plage d’octets à partir du milieu. Par exemple, la commande ci-dessous sélectionne les octets des numéros de colonne 17 à 30 :
$ cut -b 17-30 file.txt
4. Imprimer Spécifiez la position de l’octet de départ du fichier
Parfois, nous voulons extraire tout le texte d’une certaine position d’octet. Dans de tels cas, nous pouvons omettre la position de l’octet de fin.
Par exemple, nous pouvons utiliser la commande suivante pour imprimer tous les octets à partir de la position 17 :
$ cut -b 17- file.txt
Dans la commande ci-dessus, 17 représente la position de l’octet de départ alors que le trait d’union (-)
représente la fin de la ligne.
5. Imprimer Spécifiez la position de l’octet de fin du fichier
De la même manière, nous pouvons également spécifier uniquement la position de l’octet de fin. Par exemple, la commande ci-dessous imprime tous les octets depuis le début de la ligne jusqu’à la 12e colonne :
$ cut -b -12 file.txt
Dans la commande ci-dessus, le trait d’union (-)
représente le début de la ligne tandis que 12 représente la position de l’octet de fin.
6. Couper le premier octet par position de caractère
Dans les dernières sections, nous avons vu comment effectuer une extraction de texte basée sur la position des octets. Voyons maintenant comment effectuer l’extraction de texte par position de caractère.
Pour y parvenir, nous pouvons utiliser le -c
option pour couper le premier octet de la chaîne multi-octets suivante :
$ echo école | cut -b 1 �
Dans la sortie ci-dessus, nous pouvons voir que la commande cut affiche un point d’interrogation au lieu du caractère é
. Cela se produit parce que nous essayons d’imprimer le premier octet du caractère multi-octets.
Maintenant, utilisons le -c
possibilité de couper le même caractère multi-octets et d’observer le résultat :
$ echo école | cut -c 1 é
Dans la sortie ci-dessus, nous pouvons voir que maintenant la commande cut affiche la sortie attendue.
Il est important de noter que toutes les versions des commandes de coupe ne prennent pas en charge les caractères multi-octets. Par exemple, Ubuntu et ses dérivés ne prennent pas en charge les caractères multi-octets.
Pour comprendre cela, lançons la même commande sur le Menthe Linux qui est dérivé de Ubuntu:
Ici, nous pouvons voir que le couper La commande traite les caractères multi-octets et les caractères à un octet de la même manière. Par conséquent, il ne génère pas la sortie attendue.
7. Couper une chaîne par délimiteur sous Linux
Par défaut, le couper commande utilise un LANGUETTE caractère comme délimiteur. Cependant, nous pouvons remplacer ce comportement par défaut en utilisant le -d
option.
Souvent, le -d
l’option est utilisée en combinaison avec l’option -f
option qui est utilisée pour sélectionner un champ particulier.
Pour comprendre cela, utilisons le caractère espace comme délimiteur et imprimons les deux premiers champs en utilisant le -f
option:
$ cut -d " " -f 1,2 file.txt
Dans l’exemple ci-dessus, nous avons utilisé la virgule avec le -f
possibilité de sélectionner plusieurs champs.
8. Imprimer tous les octets ou caractères sauf ceux sélectionnés
Parfois, nous voulons imprimer tous les caractères sauf quelques-uns. Dans de tels cas, nous pouvons utiliser le --complement
option. Comme son nom l’indique, cette option imprime toutes les colonnes sauf celles spécifiées.
$ cut -c 1 --complement file.txt
Dans la sortie ci-dessus, nous pouvons voir que le --complement
L’option imprime tous les caractères sauf le premier caractère.
Il est important de noter que, dans cet exemple, nous avons utilisé des virgules pour sélectionner plusieurs champs. Cependant, nous pouvons également utiliser les autres plages prises en charge. On peut se référer aux premiers exemples de ce tutoriel pour mieux comprendre les gammes.
Conclusion
Dans ce guide du débutant, nous avons abordé les exemples pratiques de la couper commande avec filtrage de texte basé sur la position de l’octet, la position du caractère et le délimiteur.
Connaissez-vous un autre meilleur exemple de la commande cut sous Linux ? Faites-nous part de vos opinions dans les commentaires ci-dessous.