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
cut permet de sélectionner des colonnes ou des champs à partir d'une entrée
soit un fichier
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:/
......
soit un flux
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
....
sur le périphérique standard, option par défaut
$ lsmod |cut -c 1-20 >lsmod.txt
$ cat lsmod.txt
Module
ctr
ccm
pci_stub
....
$ echo 1234567890 |cut -c 5
5
$ echo 1234567890 |cut -c 5,8
58
Sélection des colonnes après 3 (inclus)
$ echo 1234567890 |cut -c 3-
34567890
Sélection des colonnes avant 7 (inclus)
$ echo 1234567890 |cut -c -7
1234567
$ echo 1234567890 |cut -c 3-7
34567
Sélection des colonnes avant 3 et après 7 (inclus)
$ echo 1234567890 |cut -c -3,7-
1237890
$ 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
$ 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
nommément par exemple bxrt24
par une gamme : b-g ou 1-4
par une classe de caractère :
[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
$ tr -d 1,3,5,7,9
123456789
2468
$ tr -d 0-5
0123456789
6789
Suppression d'une classe de caractères, par exemple les majuscules
$ tr -d [:upper:]
aAbBcCdDeEfF
abcdef
$ echo -e "un\ndeux\ntrois" |tr -d "\n"
undeuxtrois
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:]]
@-<$"/&?*}=]$%)$\>$"\~('/@~!<|<^<&@,?!?:\}(&}_:[+:;/=;:#[@#/(}>_^{/:]*},|
$ 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