Cut - Tr - Tutoriel linux

Mise à jour : Debian 10.3

Cut : Sélection de colonnes en fonction de leurs numéros ou sélection de champs à partir de délimiteurs

Tr : Remplacement ou suppression de caractères

Sommaire

1 - Cut

1.1 - Entrée / Sortie

cut permet de sélectionner des colonnes ou des champs à partir d'une entrée

Exemple : Sélection des caractères 1 à 20 des lignes du fichier /etc/passwd

$ cut -c 1-20 /etc/passwd
root:x:0:0:root:/roo
daemon:x:1:1:daemon:
bin:x:2:2:bin:/bin:/
......

Exemple : Sélection des caractères 1 à 20 de la sortie de la commande lsmod

$ lsmod |cut -c 1-20
Module
ctr
ccm
pci_stub
....
$ lsmod |cut -c 1-20 >lsmod.txt
$ cat lsmod.txt
Module
ctr
ccm
pci_stub
....

1.2 - Sélection de colonnes

$ echo 1234567890 |cut -c 5
5
$ echo 1234567890 |cut -c 5,8
58
$ echo 1234567890 |cut -c 3-
34567890
$ echo 1234567890 |cut -c -7
1234567
$ echo 1234567890 |cut -c 3-7
34567
$ echo 1234567890 |cut -c -3,7-
1237890

1.3 - Sélection de champs

$ echo "Un deux trois quatre" |cut -d " " -f 3
trois

$ echo " Un deux trois quatre" |cut -d " " -f 3
deux
$ echo /sys/class/net/eno1 |cut -d/ -f 3
class
$ echo "Un deux trois quatre" |cut -d " " -f2-3
deux trois
$ echo "ce texte ne comprend pas le délimiteur étoile" |cut -d "*" -f5
ce texte ne comprend pas le délimiteur étoile

2 - Tr

2.1 - Entrée / Sortie

tr permet de supprimer ou remplacer des caractères depuis l'entrée standard vers la sortie standard. Dans les exemples qui suivent, on remplace le caractère a par le caractère A
$ tr a A
azerazerazer
AzerAzerAzer
$ echo azerazer |tr a A
AzerAzer
$ echo -e "azeazearLigne1 \n azerazeligne2" >Fichier_entrée

$ tr a A < Fichier_entrée
AzeAzeArLigne1
AzerAzeligne2
$ tr x y <Fichier_entrée >Fichier_sortie

$ cat Fichier_sortie
AzeAzeArLigne1
AzerAzeligne2

2.2 - Désignation des caractères

  [CAR*RÉPÉTER]   RÉPÉTER copies de CAR, RÉPÉTER est un octal s'il débute par 0
[:alnum:] toutes les lettres et les chiffres
[:alpha:] toutes les lettres
[:blank:] tous les blancs horizontaux
[:cntrl:] tous les caractères de contrôle
[:digit:] tous les chiffres
[:graph:] tous les caractères imprimables, sans inclure les blancs
[:lower:] tous les lettres minuscules
[:print:] tous les caractères imprimables, incluant les blancs
[:punct:] tous les caractères de ponctuation
[:space:] tous les sauts verticaux ou horizontaux
[:upper:] toutes les lettres majuscules
[:xdigit:] tous les chiffres hexadécimaux
[=CAR=] tous les caractères équivalents à CAR
 \NNN            caractère ayant la valeur octale NNN (1 à 3 chiffres octaux)
\\ barre oblique inverse
\a sonnerie (SON)
\b espace arrière
\f saut de page
\n nouvelle ligne
\r retour chariot
\t tabulation horizontale
\v saut vertical

2.3 - Suppression de caractères (option -d )

$ tr -d 1,3,5,7,9
123456789
2468
$ tr -d 0-5
0123456789
6789
$ tr -d [:upper:]
aAbBcCdDeEfF
abcdef
$ echo -e "un\ndeux\ntrois" |tr -d "\n"
undeuxtrois

2.4 - Sélection de caractères (option -d -c)

La combinaison des options -c (complémentaire) et -d (suppression) permet de sélectionner les caractères à conserver

$ echo "azerazeraezr AZEERR" |tr -c -d [:lower:]
azerazeraezr
$ echo "quatre=4"| tr -cd 0-9
4
$ dd if=/dev/urandom bs=512 count=1 status=none |tr -cd [:alpha:]
dzQUzMRMLAVTcxwfFmFlPjPyBLvspvlQVrDRUPVSkdlxedAyCEIHWizyFjKsUFIvSGB....
$ dd if=/dev/urandom bs=512 count=1 status=none|tr -cd [:punct:]]
@-<$"/&?*}=]$%)$\>$"\~('/@~!<|<^<&@,?!?:\}(&}_:[+:;/=;:#[@#/(}>_^{/:]*},|

2.5 - Remplacement de caractères

$ tr ' ' '_'
les espaces sont remplacés par des tirets bas
les_espaces_sont_remplacés_par_des_tirets_bas
$ echo -e 'un\ndeux\ntrois' |tr  '\n' '\t'
un deux trois
$ tr 123 A-Z
123456789
ABC456789
$ tr A-Z 1-7
ABCDEFGHIJKLMNO
123456777777777
$ tr [:lower:]  [:upper:]
ceci est un test
CECI EST UN TEST
$ tr -s ' '
les espaces multiples sont supprimés
les espaces multiples sont supprimés
$ tr -c '123\n' 'X'
123456789
123XXXXXX