tr
est un utilitaire de ligne de commande dans les systèmes Linux et Unix qui traduit, supprime et comprime les caractères de l’entrée standard et écrit le résultat dans la sortie standard.
la commande tr
peut effectuer des opérations telles que la suppression de caractères répétés, la conversion de majuscules en minuscules et le remplacement et la suppression de caractères de base. Typiquement, il est utilisé en combinaison avec d’autres commandes à travers la tuyauterie.,
dans ce tutoriel, nous allons vous montrer comment utiliser la commande tr
à travers des exemples pratiques et des explications détaillées des options les plus courantes.
Comment Utiliser le tr Commande #
La syntaxe de la balise tr
commande:
tr OPTION... SET1
tr
accepte les deux ensembles de caractères, généralement avec la même longueur, et remplace les caractères des premiers jeux avec les caractères correspondants de la deuxième série.,
unSET
est essentiellement une chaîne de caractères, y compris les caractères spéciaux échappés par barre oblique inverse.
dans l’exemple suivant, tr
remplacera tous les caractères de l’entrée standard (linuxize), en mappant les caractères du premier ensemble avec ceux correspondants du deuxième ensemble.,
echo 'linuxize' | tr 'lin' 'red'
Chaque occurrence de l
est remplacé par r
, i
par e
, et n
par d
:
reduxeze
Les jeux de caractères peuvent également être définis à l’aide de plages de caractères., Par exemple, au lieu d’écrire:
echo 'linuxize' | tr 'lmno' 'wxyz'
vous pouvez utiliser:
echo 'linuxize' | tr 'l-n' 'w-z'
Lors de la -c
(--complement
) cette option est utilisée, tr
remplace tous les caractères qui ne sont pas dans SET1.
Dans l’exemple ci-dessous tous les caractères sauf « li” sera remplacé par le dernier caractère de la deuxième série:
echo 'linuxize' | tr -c 'li' 'xy'
liyyyiyyy
Comme vous l’avez remarqué, la sortie ci-dessus, un caractère visible de l’entrée., En effet, la commandeecho
imprime un caractère invisible de retour à la ligne\n
qui est également remplacé pary
. Pour faire écho à une chaîne sans nouvelle ligne, utilisez l’option-n
.
Le -d
(--delete
) option indique tr
pour supprimer les caractères spécifiés dans SET1. Lorsque vous supprimez des caractères sans presser, spécifiez un seul ensemble.,
La commande ci-dessous va supprimer l
, i
et z
personnages:
echo 'Linuxize' | tr -d 'liz'
Le L
caractère n’est pas supprimé, car l’entrée comprend une majuscule L
lors de la l
personnage dans le JEU est minuscule.
Lnuxe
Le -s
(--squeeze-repeats
) option remplace une séquence d’occurrences répétées avec le jeu de caractères dans le dernier SET.,
Dans l’exemple suivant, tr
supprime la répétition de caractères d’espace:
echo "GNU \ Linux" | tr -s ' '
GNU \ Linux
Quand SET2 est utilisé la séquence de caractères spécifié dans SET1 est remplacé par SET2.
echo "GNU \ Linux" | tr -s ' ' '_'
GNU_\_Linux
Le -t
(--truncate-set1
) option forces tr
tronquer SET1 à la longueur de SET2 avant de faire un traitement ultérieur.,
par défaut, si SET1 est plus grand que SET2tr
réutilisera le dernier caractère de SET2. Voici un exemple:
echo 'Linux ize' | tr 'abcde' '12'
La sortie montre que le caractère e
à partir de SET1 est jumelé avec le dernier caractère de SET2, qui est 2
:
Linux iz2
Maintenant, utilisez la même commande avec la balise -t
option:
echo 'Linux ize' | tr -t 'abcde' '12'
Linux ize
Vous pouvez voir que les trois derniers caractères de la SET1 sont supprimés., SET1 devient ‘ab’, la même longueur que SET2, et aucun remplacement n’est effectué.
en Combinant options #
Le tr
commande vous permet aussi de combiner ses options. Par exemple, la commande suivante première remplace tous les caractères à l’exception de i
par 0
et puis serre la répétition de l’ 0
personnages:
echo 'Linux ize' | tr -cs 'i' '0'
0i0i0
Tr Exemples de Commande #
Dans cette section, nous allons couvrir quelques exemples d’utilisations courantes de la balise tr
commande.,
Convertir aux majuscules #
la Conversion aux majuscules ou inverse est l’un des cas d’utilisation de la balise tr
commande. correspond à tous les caractères minuscules et
correspond à tous les caractères en majuscules.
echo 'Linuxize' | tr '' ''
LINUXIZE
à la Place de classes de personnage, vous pouvez également utiliser des plages:
echo 'Linuxize' | tr 'a-z' 'A-Z'
Pour convertir les majuscules en minuscules, il suffit de changer la place de la scénographie.,
Supprimer tous les caractères non numériques #
La commande suivante supprime tous les caractères non numériques:
echo "my phone is 123-456-7890" | tr -cd
représente tous les caractères numériques, et par l’aide de la balise
-c
option, la commande supprime tous les non-caractères numériques.,ressemblera à ceci:
1234567890
Mettre chaque mot dans une nouvelle ligne #
Pour mettre chaque mot dans une nouvelle ligne, nous avons besoin pour correspondre à tous les non-caractères alphanumériques et de les remplacer par une nouvelle ligne:
echo 'GNU is an operating system' | tr -cs '' '\n'
GNUisanoperatingsystem
Supprimer les lignes vides #
Pour supprimer les lignes vides suffit de presser la répétitif caractères de saut de ligne:
tr -s '\n' < file.txt > new_file.txt
Dans la commande ci-dessus, nous utilisons le symbole de redirection <
pour transmettre le contenu de la balise file.txt
à la balise tr
commande., La redirection >
a écrit la sortie de la commande de new_file.txt
.
Print PATH PATH directories on a separate line #
la variable d’environnement $PATH
est une liste de répertoires délimitée par deux points qui indique au shell quels répertoires rechercher les fichiers exécutables lorsque vous tapez une commande.,
Pour imprimer chaque répertoire sur une ligne distincte, nous avons besoin de faire correspondre les deux-points (: :
) et la remplacer par la nouvelle ligne:
echo $PATH | tr ':' '\n'
/usr/local/sbin/usr/local/bin/usr/sbin/usr/bin/sbin/bin
Conclusion
tr
est une commande pour la traduction ou la suppression de caractères.
bien que très utile,tr
ne peut fonctionner qu’avec des caractères simples. Pour une correspondance de motif et une manipulation de chaîne plus complexes, vous devez utiliser sed
ou awk
.