Android

Commande de coupe Linux avec des exemples

Commandes de base Linux - Ep15 - exercice avec corrigé

Commandes de base Linux - Ep15 - exercice avec corrigé

Table des matières:

Anonim

Il existe de nombreux utilitaires disponibles dans les systèmes Linux et Unix qui vous permettent de traiter et de filtrer les fichiers texte. Couper 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 une sortie standard. Il peut être utilisé pour couper des parties d'une ligne par délimiteur, position d'octet et caractère.

Dans ce tutoriel, nous allons vous montrer comment utiliser la commande Linux cut à travers des exemples pratiques et des explications détaillées des options de coupe les plus courantes.

Comment utiliser la commande Couper

La syntaxe de la commande cut est la suivante:

cut OPTION……

Lorsque vous utilisez la commande cut, vous devez utiliser une et une seule des options 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.

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. Lorsque vous utilisez cette option, cut affichera tous les octets, caractères ou champs à l'exception de ceux sélectionnés. -s ( --only-delimited ) - Par défaut, cut affichera toute ligne qui ne contient aucun caractère de délimitation. Lorsque vous utilisez cette option, la découpe n'imprimera pas les lignes ne contenant pas de délimiteurs. --output-delimiter - La valeur par défaut 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élimiteur de sortie différente.

La commande cut peut accepter zéro ou plusieurs noms de FICHIER d'entrée. Si aucun FICHIER n'est spécifié, ou lorsque FICHIER est - , cut lira l'entrée standard.

L'argument LIST passé aux options -f , -b et -c peut être un entier, plusieurs entiers séparés par des virgules, une plage d'entiers ou plusieurs plages d'entiers séparés par des virgules. Chaque plage peut être l'une des suivantes:

  • N le Nième champ, octet ou caractère, à partir de 1. N- du Nième champ, octet ou caractère, jusqu'à la fin de la ligne. NM du Nième au Mième champ, octet ou caractère. -M du premier au champ Mth, octet ou caractère.

Comment couper par champ

La commande Couper est principalement utilisée pour afficher les champs sélectionnés de chaque ligne de fichiers ou de l'entrée standard. 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. Tous les champs sont séparés par des onglets.

test.txt

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

Pour afficher les 1er et 3e champs, vous utiliseriez:

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, utilisez l'option -d suivie du délimiteur que vous souhaitez utiliser.

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

cut test.txt -d ':' -f 1, 3

245:4540 Admin 01 535:3476 Sales 11

Vous pouvez utiliser n'importe quel caractère unique 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 l'option --complement . Cela imprimera uniquement les champs qui ne sont pas sélectionnés avec l'option -f .

La commande suivante imprime tous les champs sauf les 1er et 3e:

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 l'option --output-delimiter . 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 octets et caractères.

Un octet fait 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 comprend 128 caractères et chaque caractère est représenté par un octet. Lorsque les ordinateurs ont commencé à devenir populaires à l'échelle mondiale, les entreprises technologiques ont commencé à introduire de nouveaux encodages de caractères pour différentes langues et pour les langues contenant 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 un nouveau standard 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.

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

Utilisez l'option -b ( --bytes ) pour couper une section d'une ligne en spécifiant une position d'octet.

Sélectionnez le 5e 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 5e octet:

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

drüb

Au moment de la rédaction de cet article, la version de cut intégrée à GNU coreutils n'a pas d'option pour couper par caractères. Lorsque vous utilisez l'option -c , cut se comporte de la même manière que lorsque vous utilisez l'option -b .

Exemples de coupe

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

Obtenez une liste de tous les utilisateurs

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

getent passwd | cut -d ':' -f1

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 la sortie de la commande d' history .

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

Conclusion

Vous devriez maintenant avoir une bonne compréhension de l'utilisation de la commande Linux cut. Bien que très utile, la commande cut a certaines limites. Il ne prend pas en charge la spécification de plusieurs caractères comme délimiteur et il ne prend pas en charge plusieurs décimètres.

terminal de coupe