Commande Linux Cut

Commande Linux Cut

Considérez la table des employés suivante, produite dans un éditeur de texte avec une police à largeur fixe, comme Courier:

Nom Date de naissance Heure de naissance Spécialité Date employée Temps employé
John 11-05-91 10:11:12 Ingénieur 12-06-14 13:14:15
Paul 03-16-86 16:17:18 Comptable 06-19-15 19:20:21
Pierre 20-20-81 Menuisier 21-21-16
Marie 22:23:24 Architecte 01:02:03
Susan 04-17-87 17:22:36 secrétaire 21-49-55 08:43:32

Supposons que ces données se trouvent dans un fichier appelé, employé.txt, dans un répertoire utilisateur Linux. Il y a six colonnes de texte avec six titres, qui sont le nom, la date de naissance, l'heure de naissance, etc. Il y a six rangées composées d'une ligne d'en-tête et de cinq lignes de données. Donc, c'est un tableau des colonnes et des lignes (lignes). Le contenu de chaque cellule de table est appelé champ. Un champ est également une sous-chaîne. Étant donné qu'une police de largeur fixe a été utilisée, il y a des colonnes de caractères. Chaque colonne de texte a des colonnes de caractères. Il y a donc des colonnes de caractères et de colonnes de champs.

Pour taper la table, commencez par la ligne d'en-tête. Tapez le premier champ et appuyez sur la touche de onglet du clavier. Tapez le champ suivant et appuyez sur la touche Tab. Continuez de cette manière jusqu'à la dernière tête du champ d'en-tête. Appuyez sur la touche Entrée. Lorsque la touche d'onglet est appuyée, le caractère '\ t' est inséré dans le code de fichier, non vu par l'utilisateur. Cependant, il est considéré par l'utilisateur comme un seul espace (qui peut être long). Lorsque la touche Entrée est enfoncée à la fin de la ligne, le caractère, '\ n' est inséré dans le code de fichier, non vu par l'utilisateur. La touche d'onglet est comptée comme un seul caractère.

Chacune des lignes de données est tapée de la même manière. Cependant, si un champ est vide, il doit être rempli en appuyant sur la touche de barre d'espace jusqu'à ce que la touche de tabule soit appuyée pour passer à la colonne de texte suivante; de sorte que le début du champ suivant, s'aligne sur le début de sa colonne de texte.

Pour l'éditeur de texte d'Ubuntu, la clé de l'onglet s'étend sur huit caractères. Ainsi, lorsque la touche TAB est enfoncée, le nombre de caractères qu'il ajoute est tel que si le champ était plein de caractères, le nombre de caractères serait un multiple de huit. N'oubliez pas qu'à la fin d'une ligne, la touche Entrée doit être enfoncée, et cette action insère un caractère dans le code, non vu par l'utilisateur. Lorsque la touche d'onglet est enfoncée, un seul caractère est inséré dans le code, non vu par l'utilisateur. Ainsi, la clé de l'onglet est comptée comme un seul personnage.

Les lignes sont délimitées par les personnages de Newline. Les champs sont délimités par les caractères d'onglet. Les champs ne doivent pas nécessairement être aussi classiques que décrits ci-dessus. Le délimiteur ne doit pas nécessairement être un caractère d'onglet. Dans le tableau ci-dessus, ':' peut être considéré comme un délimiteur, au lieu de l'onglet. Dans ce cas, les sous-traces de chaque ligne seront remisessées. Par exemple, dans le champ Tab Tab Tabs de l'heure de la naissance, ':' délimiterait deux colonnes de caractères (aux deux extrémités). Pour cette même table, la première ligne et la ligne pour Peter, n'auraient aucun délimiteur. L'ensemble d'une telle ligne devient son champ.

La délimitation des colonnes de caractères peut traverser les champs d'onglet. Par exemple, le dernier ':' dans le champ d'onglet de l'heure de la naissance, et le premier ': «dans le champ Time-Timed Tab, délimite les colonnes de caractères, les champs d'onglet Crossage et les caractères d'onglet. D'autres caractères de délimitation tels que des virgules, peuvent également être trouvés dans d'autres fichiers.

Contenu de l'article

  • Syntaxe coupé
  • Couper les colonnes de champ
  • Couper des colonnes d'octets
  • Couper des colonnes de caractères
  • Délimiteur
  • L'option -s
  • L'option-complément
  • Conclusion

Syntaxe coupé

La commande Cut copie les colonnes par caractères ou par champs, en fonction de certaines options et de leurs valeurs. Il peut également copier les lignes, mais les conditions de copie des lignes sont limitées. Il peut copier un ensemble de colonnes et de lignes; Les conditions pour les lignes impliquées sont limitées. Les lignes sont des lignes. La syntaxe est:

Coupez l'option… [Fichier]…

Il peut y avoir plus d'un fichier. Cependant, ce tutoriel n'utilise qu'un seul fichier dont le nom est l'employé.txt dans le répertoire utilisateur et avec le contenu ci-dessus. S'il n'y a pas d'argument de fichier, coupez les lectures de l'entrée standard. Cut est une commande Linux Shell avec différentes options possibles. Certaines options prennent des valeurs.

Le comptage des colonnes commence à partir de 1 et non zéro. Ainsi, la première colonne de caractères (à gauche) est la colonne 1; La deuxième colonne de caractères est la colonne 2; La colonne de troisième caractères est la colonne 3, et ainsi de suite. La première colonne de champ (à gauche) est la colonne de champ 1; La deuxième colonne de champ est la colonne de champ 2; La troisième colonne de champ est la colonne de champ 3, et ainsi de suite.

Ainsi, la commande Cut copie les sections des lignes dans un fichier, comme cela a été souligné. Il imprime normalement le résultat à la sortie standard.

Couper les champs

Découper les champs signifie copier les champs. Le fichier d'origine reste intact. L'option -f est utilisée pour cela, où F représente le champ. -F utilise le caractère d'onglet comme délimiteur. Alors, dans

$ Cut -f 1,3 Employé.SMS

-F signifie la commande copie les champs et non les caractères ou les octets. La valeur pour -f est 1 et 3 séparées par des virgules et pas d'espace. Cela signifie envoyer à la sortie standard, colonnes de champ 1 et 3. Le résultat est:

Nom Heure de naissance
John 10:11:12
Paul 16:17:18
Pierre
Marie 22:23:24
Susan 17:22:36

Si des colonnes de champ, 1, 3, 5 étaient nécessaires, alors la valeur de -f aurait été de 1,3,5 nombres séparés par des virgules, et pas d'espace. C'est ainsi que les colonnes de champ peuvent être choisies. Dans ce cas, l'onglet est le délimiteur.

Gamme de colonnes de champ

La commande suivante sélectionne les colonnes de champ dans la colonne de champ, 2 à la colonne de champ, 5, inclusive:

$ Cut -F 2-5 Employé.SMS

La sortie est:

Date de naissance Heure de naissance Spécialité Date employée
11-05-91 10:11:12 Ingénieur 12-06-14
03-16-86 16:17:18 Comptable 06-19-15
20-20-81 Menuisier 21-21-16
22:23:24 Architecte
04-17-87 17:22:36 secrétaire 21-49-55

Notez le trait d'union entre 2 et 5 pour indiquer la plage.

Copie à partir d'un numéro de champ, N et plus

La commande suivante copie de la cinquième colonne de champ et supérieur:

$ Cut -f 5- Employé.SMS

Notez le trait d'union juste après 5 ans, aucun espace entre les deux. Le résultat est:

Date employée Temps employé
12-06-14 13:14:15
06-19-15 19:20:21
21-21-16
01:02:03
21-49-55 08:43:32

Copie ci-dessous le numéro de champ, n

La commande suivante, copie la deuxième colonne de champ et celles ci-dessous:

$ Cut -F -2 Employé.SMS

Notez le trait d'union juste avant 2, aucun espace entre les deux. Le résultat est:

Nom Date de naissance
John 11-05-91
Paul 03-16-86
Pierre 20-20-81
Marie
Susan 04-17-87

Couper des colonnes d'octets

Les colonnes des octets sont copiées de la même manière que les colonnes de champ. Si le code ASCII est en vigueur, alors un octet est un caractère. Dans ce cas, un onglet (\ t) est un personnage, et s'il est copié, il aura son effet de prendre le curseur à l'endroit où le neuvième caractère devrait être. L'option pour les octets est -B. La commande suivante l'illustre pour les colonnes deuxième, troisième et quatrième octets (caractères):

$ Cut -B 2,3,4 Employé.SMS

La sortie est:

AME
ohn
aul
ete
ary
Etats-Unis

Effet de l'onglet

La commande suivante affiche les colonnes d'octets du premier au dixième:

$ Cut -B 1-10 Employé.SMS

La sortie est:

Nom Date
John 11-05
Paul 03-
Pierre
Marie 07-2
Susan 04-1

Le nombre d'octets (caractères) dans chaque ligne n'est pas le même car (a) il y a deux personnages spatiaux après Paul, dans le domaine de Paul; et (b) le caractère de l'onglet est compté comme un seul caractère (et il a son effet).

Couper des colonnes de caractères

Les colonnes de caractères sont gérées de la même manière que les colonnes d'octets. En fait, lorsque vous traitez avec un codage de caractères multi-octets, utilisez des caractères, au lieu d'octets. L'option pour les caractères est -c. Les deux commandes suivantes reproduisent les deux sorties précédentes (dans l'ordre):

$ Cut -C 2,3,4 Employé.SMS
$ Cut -C 1-10 Employé.SMS

Délimiteur

Au lieu d'utiliser le caractère d'onglet pour séparer les sous-traces, les délimiteurs tels que ':', '-', ',', ", etc. peut être utilisé. Un tel délimiteur remonte les sous-chaînes qui forment la ligne. En d'autres termes, au lieu que les champs soient séparés par le caractère de l'onglet, ils sont séparés par le nouveau délimiteur. Les commandes dans ce cas sont similaires aux commandes de champ avec l'option -f, mais avec l'option -D pour Delimiter, incluse. La commande suivante copie les deux premiers champs basés sur le «-» délimiteur.

$ Cut -d '-' -f 1,2 Employé.SMS

La sortie est:

Nom Date de naissance Heure de naissance Spécialité Date employée Temps employé
John 11-05
Paul 03-16
Pierre 07-20
Marie 22:23:24 Architecte 01:02:03
Susan 04-17

Ce résultat est logiquement correct. Toute la première ligne a été affichée, car elle n'a pas de '-'. Toute la cinquième ligne a été affichée, car elle n'a pas de '-'. Le personnage de l'onglet maintenant, n'est qu'un seul caractère, bien qu'il ait toujours son effet. La ligne pour Paul, par exemple, «Paul 03» est maintenant un champ et «16» est le deuxième champ. Avec le «-» délimiteur, les alignements verticaux pour les nouveaux champs sont médiocres. Deux champs ont été retournés, séparés par '-'. '-' a été rediffuré.

Les premières et cinquième lignes qui n'ont pas les délimiteurs peuvent être supprimées avec l'option -s. N'oubliez pas que les lignes dans ce sujet sont des lignes.

L'option -s

Le résultat ci-dessus ne devrait pas avoir les première et cinquième lignes. L'option -s élimine les lignes qui n'ont pas le délimiteur. Avec l'option -s, la commande ci-dessus devient:

$ Cut -s -d '-' -f 1,2 Employé.SMS

Un résultat plus satisfaisant est obtenu, c'est-à-dire:

John 11-05
Paul 03-16
Pierre 07-20
Susan 04-17

Les deux nouvelles colonnes de champ re-partagées sont maintenant clairement vues.

L'option-complément

Cela copie les compléments pour les colonnes des octets, caractères ou champs choisis. La commande suivante copie les deux derniers champs (par TAB Demiter), au lieu des quatre premiers:

$ Cut - Complément -4 Employé.SMS
Date employée Temps employé
12-06-14 13:14:15
06-19-15 19:20:21
21-21-16
01:02:03
21-49-55 08:43:32

Conclusion

La commande Cut copie des colonnes d'octets ou de caractères ou de sous-chaînes, hors des lignes de texte dans un fichier. Par défaut, il envoie les parties sélectionnées des lignes à la sortie standard. Une sous-chaîne délimitée est un champ. Par défaut, le délimiteur pour les sous-traces est le caractère de l'onglet. Cependant, cela peut être changé. Un délimiteur tel que '-' ou ':' ou ", etc. peut être utilisé. Lorsque cela est fait, la ligne est remitrée en différentes sous-traits. L'option -s peut être utilisée pour éliminer de la sortie, les lignes qui n'ont pas le délimiteur.