GNU/Linux >> Tutoriels Linux >  >> Linux

10 exemples pratiques de commandes Linux Cut pour sélectionner des colonnes de fichiers

La commande Linux cut est utilisée pour le traitement de texte. Vous pouvez utiliser cette commande pour extraire une partie de texte d'un fichier en sélectionnant des colonnes.

Ce didacticiel fournit quelques exemples pratiques de commande de coupe que vous pouvez utiliser dans vos activités quotidiennes en ligne de commande.

Pour la plupart des exemples, nous utiliserons le fichier de test suivant.

$ cat test.txt
cat command for file oriented operations.
cp command for copy files or directories.
ls command to list out files and directories with its attributes.

1. Sélectionnez la colonne de caractères

Pour extraire uniquement une colonne souhaitée d'un fichier, utilisez l'option -c. L'exemple suivant affiche le 2ème caractère de chaque ligne d'un fichier test.txt

$ cut -c2 test.txt
a
p
s

Comme vu ci-dessus, les caractères a, p, s sont le deuxième caractère de chaque ligne du fichier test.txt.

2. Sélectionnez la colonne de caractères à l'aide de la plage

Une plage de caractères peut également être extraite d'un fichier en spécifiant les positions de début et de fin délimitées par -. L'exemple suivant extrait les 3 premiers caractères de chaque ligne d'un fichier appelé test.txt

$ cut -c1-3 test.txt
cat
cp
ls

3. Sélectionnez la colonne de caractères en utilisant la position de début ou de fin

La position de début ou la position de fin peut être transmise à la commande de coupe avec l'option -c.

Ce qui suit spécifie uniquement la position de départ avant le '-'. Cet exemple extrait du 3ème caractère à la fin de chaque ligne du fichier test.txt.

$ cut -c3- test.txt
t command for file oriented operations.
 command for copy files or directories.
 command to list out files and directories with its attributes.

Ce qui suit ne spécifie que la position finale après le '-'. Cet exemple extrait 8 caractères à partir du début de chaque ligne du fichier test.txt.

$ cut -c-8 test.txt
cat comm
cp comma
ls comma

La ligne entière serait imprimée si vous ne spécifiez pas de nombre avant ou après le "-", comme indiqué ci-dessous.

$ cut -c- test.txt
cat command for file oriented operations.
cp command for copy files or directories.
ls command to list out files and directories with its attributes.

4. Sélectionner un champ spécifique à partir d'un fichier

Au lieu de sélectionner x nombre de caractères, si vous souhaitez extraire un champ entier, vous pouvez combiner les options -f et -d. L'option -f spécifie quel champ vous souhaitez extraire et l'option -d spécifie quel est le délimiteur de champ utilisé dans le fichier d'entrée.

L'exemple suivant affiche uniquement le premier champ de chaque ligne du fichier /etc/passwd en utilisant le délimiteur de champ :(deux-points). Dans ce cas, le 1er champ est le nom d'utilisateur. Le fichier

$ cut -d':' -f1 /etc/passwd
root
daemon
bin
sys
sync
games
bala

5. Sélectionner plusieurs champs à partir d'un fichier

Vous pouvez également extraire plusieurs champs d'un fichier ou d'une sortie standard. L'exemple ci-dessous affiche le nom d'utilisateur et le répertoire personnel des utilisateurs dont le shell de connexion est "/bin/bash".

$ grep "/bin/bash" /etc/passwd | cut -d':' -f1,6
root:/root
bala:/home/bala

Pour afficher la plage de champs, spécifiez le champ de début et le champ de fin comme indiqué ci-dessous. Dans cet exemple, nous sélectionnons les champs 1 à 4, 6 et 7

$ grep "/bin/bash" /etc/passwd | cut -d':' -f1-4,6,7
root:x:0:0:/root:/bin/bash
bala:x:1000:1000:/home/bala:/bin/bash

6. Sélectionner les champs uniquement lorsqu'une ligne contient le délimiteur

Dans notre exemple /etc/passwd, si vous passez un délimiteur différent de :(deux-points), cut affichera simplement la ligne entière.

Dans l'exemple suivant, nous avons spécifié le délimiteur comme | (tuyau), et la commande cut affiche simplement la ligne entière, même lorsqu'elle ne trouve aucune ligne contenant | (tuyau) comme délimiteur.

$ grep "/bin/bash" /etc/passwd | cut -d'|'  -f1
root:x:0:0:root:/root:/bin/bash
bala:x:1000:1000:bala,,,:/home/bala:/bin/bash

Mais, il est possible de filtrer et d'afficher uniquement les lignes qui contiennent le délimiteur spécifié en utilisant l'option -s.

L'exemple suivant n'affiche aucune sortie, car la commande cut n'a trouvé aucune ligne contenant | (pipe) comme délimiteur dans le fichier /etc/passwd.

$ grep "/bin/bash" /etc/passwd | cut -d'|' -s -f1

7. Sélectionner tous les champs sauf les champs spécifiés

Afin de compléter la liste des champs de sélection, utilisez l'option –complément.

L'exemple suivant affiche tous les champs du fichier /etc/passwd sauf le champ 7

$ grep "/bin/bash" /etc/passwd | cut -d':' --complement -s -f7
root:x:0:0:root:/root
bala:x:1000:1000:bala,,,:/home/bala

8. Modifier le délimiteur de sortie pour l'affichage

Par défaut, le délimiteur de sortie est le même que le délimiteur d'entrée que nous spécifions dans l'option cut -d.

Pour modifier le délimiteur de sortie, utilisez l'option –output-delimiter comme indiqué ci-dessous. Dans cet exemple, le délimiteur d'entrée est :(deux-points), mais le délimiteur de sortie est # (dièse).

$ grep "/bin/bash" /etc/passwd | cut -d':'  -s -f1,6,7 --output-delimiter='#'
root#/root#/bin/bash
bala#/home/bala#/bin/bash

9. Remplacez le délimiteur de sortie par une nouvelle ligne

Dans cet exemple, chaque champ de la sortie de la commande de coupe est affiché sur une ligne distincte. Nous avons toujours utilisé –output-delimiter, mais la valeur est $'\n', ce qui indique que nous devons ajouter une nouvelle ligne comme délimiteur de sortie.

$ grep bala /etc/passwd | cut -d':' -f1,6,7 --output-delimiter=$'\n'
bala
/home/bala
/bin/bash

10. Combiner Couper avec une autre sortie de commande Unix

La puissance de la commande cut peut être réalisée lorsque vous la combinez avec la sortie standard d'une autre commande Unix.

Une fois que vous maîtrisez l'utilisation de base de la commande de coupe que nous avons expliquée ci-dessus, vous pouvez utiliser judicieusement la commande de coupe pour résoudre bon nombre de vos besoins en matière de manipulation de texte.

L'exemple suivant indique comment extraire uniquement les informations utiles de la sortie de la commande ps. Nous avons également montré comment nous avons filtré la sortie de la commande ps en utilisant grep et sed avant que la sortie finale ne soit donnée à la commande cut. Ici, nous avons utilisé les options de coupe -d et -f que nous avons expliquées dans les exemples ci-dessus.

$ ps axu | grep python | sed 's/\s\+/ /g' | cut -d' ' -f2,11-
2231 /usr/bin/python /usr/lib/unity-lens-video/unity-lens-video
2311 /usr/bin/python /usr/lib/unity-scope-video-remote/unity-scope-video-remote
2414 /usr/bin/python /usr/lib/ubuntuone-client/ubuntuone-syncdaemon
2463 /usr/bin/python /usr/lib/system-service/system-service-d
3274 grep --color=auto python

Linux
  1. Commande mv sous Linux :7 exemples essentiels

  2. Commande cp sous Linux :7 exemples pratiques

  3. Commande d'arrêt de Linux :5 exemples pratiques

  4. ln Exemples de commandes sous Linux

  5. file Exemples de commandes sous Linux

16 exemples pratiques de la commande Traceroute sous Linux

20 exemples pratiques de commande Chown sous Linux

15 exemples pratiques de commande Locate sous Linux

12 exemples pratiques d'In Command sous Linux

15 exemples pratiques de commande Rsync sous Linux

5 exemples pratiques de la commande Tail sous Linux