GNU/Linux >> Tutoriels Linux >  >> Linux

Couper la commande sous Linux

Il existe de nombreux utilitaires disponibles dans les systèmes Linux et Unix qui vous permettent de traiter et de filtrer les fichiers texte. cut est un utilitaire de ligne de commande qui vous permet de couper des parties de lignes à partir de fichiers spécifiés ou de données canalisées et d'imprimer le résultat sur la sortie standard. Il peut être utilisé pour couper des parties d'une ligne par délimiteur, position d'octet et caractère.

Dans cet article, nous allons vous montrer comment utiliser le cut commande à travers des exemples pratiques et des explications détaillées des options les plus courantes.

Comment utiliser la cut Commande #

La syntaxe du cut commande est la suivante :

cut OPTION... [FILE]...

Les options qui indiquent cut s'il faut utiliser un délimiteur, une position d'octet ou un caractère lors de la découpe de portions sélectionnées, les lignes sont les suivantes :

  • -f (--fields=LIST ) - Sélectionnez en spécifiant un champ, un ensemble de champs ou une plage de champs. Il s'agit de l'option la plus couramment utilisée.
  • -b (--bytes=LIST ) - Sélectionnez en spécifiant un octet, un ensemble d'octets ou une plage d'octets.
  • -c (--characters=LIST ) - Sélectionnez en spécifiant un caractère, un ensemble de caractères ou une plage de caractères.

Vous ne pouvez utiliser qu'une seule des options répertoriées ci-dessus.

Les autres options sont :

  • -d (--delimiter ) - Spécifiez un délimiteur qui sera utilisé à la place du délimiteur "TAB" par défaut.
  • --complement - Compléter la sélection. Lors de l'utilisation de cette option cut affiche tous les octets, caractères ou champs à l'exception de la sélection.
  • -s (--only-delimited ) - Par défaut cut imprime les lignes qui ne contiennent aucun caractère délimiteur. Lorsque cette option est utilisée, cut n'imprime pas les lignes ne contenant pas de délimiteurs.
  • --output-delimiter - Le comportement par défaut de cut est d'utiliser le délimiteur d'entrée comme délimiteur de sortie. Cette option vous permet de spécifier une chaîne de délimitation de sortie différente.

La cut La commande peut accepter zéro ou plusieurs noms de FICHIER en entrée. Si pas de FILE est spécifié, ou lorsque FILE est - , cut lira à partir de l'entrée standard.

La LIST argument passé au -f , -b , et -c les options peuvent être un nombre entier, plusieurs nombres entiers séparés par des virgules, une plage de nombres entiers ou plusieurs plages de nombres entiers séparés par des virgules. Chaque plage peut être l'une des suivantes :

  • N le Nième champ, octet ou caractère, en commençant par 1.
  • N- du Nième champ, octet ou caractère, jusqu'à la fin de la ligne.
  • N-M du Nième au Mième champ, octet ou caractère.
  • -M du premier au Mième champ, octet ou caractère.

Comment couper par champ #

Pour spécifier les champs qui doivent être coupés, appelez la commande avec le -f option. Lorsqu'il n'est pas spécifié, le délimiteur par défaut est "TAB".

Dans les exemples ci-dessous, nous utiliserons le fichier suivant. Les champs sont séparés par des tabulations.

test.txt
245:789 4567    M:4540  Admin   01:10:1980
535:763 4987    M:3476  Sales   11:04:1978

Par exemple, pour afficher le 1er et le 3ème champ, vous utiliserez :

cut test.txt -f 1,3
245:789	M:4540
535:763	M:3476

Ou si vous souhaitez afficher du 1er au 4ème champ :

cut test.txt -f -4
245:789	4567	M:4540	Admin
535:763	4987	M:3476	Sales

Comment couper en fonction d'un délimiteur #

Pour couper en fonction d'un délimiteur, invoquez la commande avec le -d option, suivi du délimiteur que vous souhaitez utiliser.

Par exemple, pour afficher les 1er et 3e champs en utilisant « :» comme délimiteur, vous saisirez :

cut test.txt -d ':' -f 1,3
245:4540	Admin	01
535:3476	Sales	11

Vous pouvez utiliser n'importe quel caractère comme délimiteur. Dans l'exemple suivant, nous utilisons le caractère espace comme délimiteur et imprimons le 2ème champ :

echo "Lorem ipsum dolor sit amet" | cut -d ' ' -f 2
ipsum

Comment compléter la sélection #

Pour compléter la liste des champs de sélection, utilisez --complement option. Cela n'imprimera que les champs qui ne sont pas sélectionnés avec le -f option.

La commande suivante imprimera tous les champs sauf le 1er et le 3ème :

cut test.txt -f 1,3 --complement
4567	Admin	01:10:1980
4987	Sales	11:04:1978

Comment spécifier un délimiteur de sortie #

Pour spécifier le délimiteur de sortie, utilisez le --output-delimiter option. Par exemple, pour définir le délimiteur de sortie sur _ vous utiliseriez :

cut test.txt -f 1,3 --output-delimiter='_'
245:789_M:4540
535:763_M:3476

Comment couper par octets et caractères #

Avant d'aller plus loin, faisons une distinction entre les octets et les caractères.

Un octet correspond à 8 bits et peut représenter 256 valeurs différentes. Lorsque la norme ASCII a été établie, elle a pris en compte toutes les lettres, chiffres et symboles nécessaires pour travailler avec l'anglais. La table de caractères ASCII comporte 128 caractères et chaque caractère est représenté par un octet. Lorsque les ordinateurs ont commencé à devenir accessibles à l'échelle mondiale, les entreprises technologiques ont commencé à introduire de nouveaux encodages de caractères pour différentes langues. Pour les langues qui ont plus de 256 caractères, un simple mappage 1 à 1 n'était pas possible. Cela conduit à différents problèmes tels que le partage de documents ou la navigation sur des sites Web, et une nouvelle norme Unicode capable de gérer la plupart des systèmes d'écriture du monde était nécessaire. UTF-8 a été créé pour résoudre ces problèmes. En UTF-8, tous les caractères ne sont pas représentés avec 1 octet. Les caractères peuvent être représentés avec 1 octet à 4 octets.

Le -b (--bytes ) indique à la commande de couper des sections de chaque ligne spécifiée par des positions d'octet données.

Dans les exemples suivants, nous utilisons le ü caractère qui prend 2 octets.

Sélectionnez le 5ème octet :

echo 'drüberspringen' | cut -b 5
b

Sélectionnez les 5e, 9e et 13e octets :

echo 'drüberspringen' | cut -b 5,9,13
bpg

Sélectionnez la plage du 1er au 5ème octet :

echo 'drüberspringen' | cut -b 1-5
drüb

Au moment de la rédaction de cet article, la version de cut fourni dans GNU coreutils n'a pas la possibilité de couper par caractères. Lors de l'utilisation du -c option, cut se comporte de la même manière que lors de l'utilisation de -b option.

Exemples de coupe #

La cut La commande est généralement utilisée en combinaison avec d'autres commandes via la tuyauterie. Voici quelques exemples :

Obtenir une liste de tous les utilisateurs #

La sortie du getent passwd la commande est passée à cut , qui imprime le 1er champ en utilisant : comme délimiteur.

getent passwd | cut -d ':' -f1

La sortie affiche une liste de tous les utilisateurs du système.

Afficher les 10 commandes les plus fréquemment utilisées #

Dans l'exemple suivant, cut est utilisé pour supprimer les 8 premiers octets de chaque ligne de l'history sortie de la commande.

history | cut -c8- | sort | uniq -c | sort -rn | head

Conclusion #

cut La commande est utilisée pour afficher les champs sélectionnés à partir de chaque ligne de fichiers donnés ou de l'entrée standard.

Bien que très utile, cut a quelques limites. Il ne prend pas en charge la spécification de plus d'un caractère comme délimiteur et il ne prend pas en charge plusieurs délimiteurs.

Si vous avez des questions ou des commentaires, n'hésitez pas à laisser un commentaire.


Linux
  1. Commande Linux mv

  2. Linux du command

  3. Commande IP Linux

  4. Commande cd Linux

  5. coller des exemples de commandes sous Linux

Commande de type Linux

Commande W sous Linux

À la commande sous Linux

Commande Df sous Linux

Commande Couper sous Linux

Utilisation de cut sur Linux Terminal