GNU/Linux >> Tutoriels Linux >  >> Linux

Commande Linux Cut avec des exemples pratiques

La commande cut est utilisée dans les systèmes Linux et Unix pour couper des parties et des sections de chaque ligne d'un fichier et écrire le résultat sur la sortie standard. Il peut être utilisé pour couper des parties d'une ligne par position d'octet, caractère et champ (délimiteur).

Dans ce didacticiel, nous apprenons la commande Linux cut avec quelques exemples pratiques que vous pouvez utiliser dans vos activités quotidiennes en ligne de commande.

Couper la commande et la syntaxe

La syntaxe de base de la commande de coupe est la suivante :

cut OPTION... [FILE]...

Vérifions les options de coupe et sans aucune option, la commande de coupe ne fonctionnera pas.

Options de coupe

-f :Extraire en spécifiant un champ. La commande Couper utilise 'TAB' comme délimiteur de champ par défaut.

-d  :'Tab' est le délimiteur par défaut et en utilisant cette option, vous pouvez utiliser un délimiteur spécifique.

-b :Pour extraire en spécifiant un octet. La plage d'octets peut également être spécifiée.

-c :Pour couper par caractère. Il peut s'agir d'une liste de nombres séparés par une virgule ou d'une plage de nombres séparés par un trait d'union (-).

–complement :Cela complétera la sélection

–output-delimiter :Pour changer le délimiteur de sortie, utilisez l'option -output-delimiter='delimiter'.

--only-delimited :Couper n'imprimera pas les lignes ne contenant pas de délimiteurs

Nous utiliserons le fichier texte suivant nommé 'content.txt' et le fichier /etc/passwd tout au long de ce didacticiel pour illustrer nos exemples.

$ cat content.txt 
Ubuntu Linux
Microsoft Windows
OsX El Capitan
Unix
FreeBSD

Comment couper par délimiteur

L'option de coupe la plus couramment utilisée est une combinaison de -d et -f . Il extraira essentiellement le contenu en fonction d'un délimiteur spécifique et des champs répertoriés.

Par exemple, ce qui suit imprime uniquement le 1er champ de chaque ligne du fichier '/etc/passwd' en utilisant le délimiteur (:).

$ cut -d':' -f1 /etc/passwd
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator
games
...

L'exemple suivant où nous utilisons l'espace (" ") comme délimiteur et coupons le 1er champ du fichier nommé 'content.txt'.

$ cut -d " " -f 1 content.txt 
Ubuntu
Microsoft
OsX
Unix
FreeBSD

Cet exemple extrait plusieurs champs d'un fichier spécifique. Ici, nous extrayons les 1er et 6ème champs en utilisant le délimiteur deux-points (:) du fichier '/etc/passwd' qui contient la chaîne '/bin/bash' :

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

Pour afficher la plage de champs, spécifiez le champ de début et le champ de fin séparés par un trait d'union (-) comme indiqué ci-dessous :

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

Comment compléter la sélection de sortie

Pour compléter la liste des champs de sélection, utilisez --complement option. Cette option permet de sélectionner tous les champs à l'exception des champs spécifiés.

Dans l'exemple suivant, la commande imprime tous les champs sauf le 2e champ du fichier '/etc/passwd' :

$ grep "/bin/bash" /etc/passwd | cut -d':' --complement -f2
root:0:0:root:/root:/bin/bash

Comment spécifier un délimiteur de sortie

Pour spécifier le délimiteur de sortie, utilisez le --output-delimiter option. Le délimiteur d'entrée est spécifié par -d option et par défaut le délimiteur de sortie est le même que le délimiteur d'entrée.

Vérifions d'abord la sortie sans utiliser de délimiteur de sortie comme suit :

$  cut -d: -f1,7  /etc/passwd |  sort |  uniq -u
_apt:/usr/sbin/nologin
backup:/usr/sbin/nologin
bin:/usr/sbin/nologin
daemon:/usr/sbin/nologin
dnsmasq:/usr/sbin/nologin
games:/usr/sbin/nologin
gnats:/usr/sbin/nologin
irc:/usr/sbin/nologin
landscape:/usr/sbin/nologin
list:/usr/sbin/nologin
lp:/usr/sbin/nologin
lxd:/bin/false

Maintenant, j'ai ajouté --output-delimiter l'option et le délimiteur d'entrée deux-points (:) sont remplacés par le délimiteur de sortie "ESPACE" comme suit :

$  cut -d: -f1,7 --output-delimiter ' ' /etc/passwd |  sort |  uniq -u
_apt /usr/sbin/nologin
backup /usr/sbin/nologin
bin /usr/sbin/nologin
daemon /usr/sbin/nologin
dnsmasq /usr/sbin/nologin
games /usr/sbin/nologin
gnats /usr/sbin/nologin
irc /usr/sbin/nologin
landscape /usr/sbin/nologin
list /usr/sbin/nologin
lp /usr/sbin/nologin
lxd /bin/false

Vérifions un autre exemple, ici nous utilisons un délimiteur de sortie pour imprimer sur chaque champ dans une nouvelle ligne.

Ici, nous utilisons --output-delimiter comme $’\n’ qui indique une nouvelle ligne.

Vérifiez la sortie :

$ grep root /etc/passwd | cut -d':' -f1,6,7 --output-delimiter=

Comment couper par caractères

Le -c (colonne) est utilisée pour couper par position de caractère. N'oubliez pas que 'TABS" et 'Espaces' sont également traités comme des caractères.

Pour imprimer le 1er caractère de chaque ligne du fichier nommé content.txt, utilisez ci-dessous :

$ cut -c 1 content.txt
U
M
O
U
F

Dans l'exemple suivant, nous afficherons les caractères 1 à 7 (plage) de chaque ligne du fichier :

$ cut -c 1-7 content.txt
Ubuntu
Microso
OsX El
Unix
FreeBSD

Voyons comment sélectionner des colonnes par position de début ou de fin spécifique.

Pour extraire les colonnes du 2ème caractère au dernier caractère :

$ cut -c2- content.txt
buntu Linux
icrosoft Windows
sX El Capitan
nix
reeBSD

Pour extraire les colonnes du 1er au 4ème caractère :

cut -c-4 content.txt
Ubun
Micr
OsX
Unix
Free

Comment couper par octets

Utilisez le -b option pour sélectionner une partie d'une ligne en spécifiant une position d'octet par des nombres séparés par une virgule (,). En utilisant un trait d'union, vous pouvez spécifier une plage d'octets.

L'exemple suivant coupé des 1er, 2e et 3e octets du fichier nommé 'content.txt' :

$ cut -b 1,2,3 content.txt 
Ubu
Mic
OsX
Uni
Fre

Nous pouvons également lister avec des plages en utilisant la commande ci-dessous :

$ cut -b 1-3,5-7 content.txt 
Ubutu 
Micoso
OsXEl 
Uni
FreBSD

Quelques exemples de coupes pratiques

Cut est plus pratique lorsqu'il est utilisé avec une combinaison de différentes commandes Linux ou Unix.

Par exemple, vous souhaitez extraire 'USER', 'PID' et "COMMAND" à l'aide de la commande ps :

 ps -L u n | tr -s " " | cut -d " " -f 2,3,14-
USER PID COMMAND
0 676 /sbin/agetty -o -p -- \u --keep-baud 115200,38400,9600 ttyS0 vt220
0 681 /sbin/agetty -o -p -- \u --noclear tty1 linux
0 23174 -bash
0 26737 ps -L u n
0 26738 tr -s
0 26739 cut -d -f 2,3,14-

Prenons un autre exemple pour extraire la valeur "totale", "utilisée" et "libre" de la mémoire et l'enregistrer dans un fichier texte à l'aide de plusieurs commandes :

$ free -m | tr -s ' ' | sed '/^Mem/!d' | cut -d" " -f2-4 >> memory.txt
Output
$ cat memory.txt
985 86 234

Conclusion

La commande cut peut être canalisée avec de nombreuses autres commandes Linux ou Unix. Il peut être canalisé avec un ou plusieurs filtres pour un traitement de texte supplémentaire.

L'une des limitations de la commande cut est qu'elle ne prend pas en charge la spécification de plus d'un caractère comme délimiteur. Plusieurs blancs sont comptés comme plusieurs séparateurs de champs et doivent utiliser la commande tr avant de couper pour obtenir la sortie souhaitée.

\n' root /root /bin/bash operator /root /sbin/nologin

Comment couper par caractères

Le -c (colonne) est utilisée pour couper par position de caractère. N'oubliez pas que 'TABS" et 'Espaces' sont également traités comme des caractères.

Pour imprimer le 1er caractère de chaque ligne du fichier nommé content.txt, utilisez ci-dessous :

 

Dans l'exemple suivant, nous afficherons les caractères 1 à 7 (plage) de chaque ligne du fichier :

 

Voyons comment sélectionner des colonnes par position de début ou de fin spécifique.

Pour extraire les colonnes du 2ème caractère au dernier caractère :

 

Pour extraire les colonnes du 1er au 4ème caractère :

 

Comment couper par octets

Utilisez le -b option pour sélectionner une partie d'une ligne en spécifiant une position d'octet par des nombres séparés par une virgule (,). En utilisant un trait d'union, vous pouvez spécifier une plage d'octets.

L'exemple suivant coupé des 1er, 2e et 3e octets du fichier nommé 'content.txt' :

 

Nous pouvons également lister avec des plages en utilisant la commande ci-dessous :

 

Quelques exemples de coupes pratiques

Cut est plus pratique lorsqu'il est utilisé avec une combinaison de différentes commandes Linux ou Unix.

Par exemple, vous souhaitez extraire 'USER', 'PID' et "COMMAND" à l'aide de la commande ps :

 

Prenons un autre exemple pour extraire la valeur "totale", "utilisée" et "libre" de la mémoire et l'enregistrer dans un fichier texte à l'aide de plusieurs commandes :

 

Conclusion

La commande cut peut être canalisée avec de nombreuses autres commandes Linux ou Unix. Il peut être canalisé avec un ou plusieurs filtres pour un traitement de texte supplémentaire.

L'une des limitations de la commande cut est qu'elle ne prend pas en charge la spécification de plus d'un caractère comme délimiteur. Plusieurs blancs sont comptés comme plusieurs séparateurs de champs et doivent utiliser la commande tr avant de couper pour obtenir la sortie souhaitée.


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

  2. Commande Linux rsync avec des exemples pratiques

  3. cut Exemples de commandes sous Linux

  4. Installer les binaires dans /bin, /sbin, /usr/bin et /usr/sbin, interactions avec --prefix et DESTDIR

  5. Quelle est la signification de /usr/sbin, /usr/local/sbin et /usr/local/bin ?

15 Commande Linux ps avec exemples

Commande de recherche Linux avec des exemples pratiques

12 exemples pratiques d'In Command sous Linux

La commande Wait sous Linux expliquée avec des exemples pratiques

La commande Uniq sous Linux expliquée avec des exemples

La commande Linux lsof expliquée avec 12 exemples pratiques