Tr
Aller à la navigation
Aller à la recherche
| Fiche express | |
|---|---|
| Domaine | Traitement de texte (filtre de flux) |
| Commande | tr
|
| Contexte | transformation caractère à caractère, généralement en pipe avec d'autres commandes |
| Voir aussi | Sed (édition de flux) |
tr (translittère ou supprime des caractères) est un filtre qui lit son entrée standard et transforme chaque caractère selon un ou deux ensembles de caractères passés en argument. Il ne travaille jamais directement sur un fichier : on l'utilise toujours en pipe ou avec une redirection d'entrée.
Syntaxe
tr [OPTIONS] ENSEMBLE1 [ENSEMBLE2]
Principales options :
- -d : supprime les caractères de ENSEMBLE1 (pas de second ensemble)
- -s : compresse les répétitions consécutives d'un même caractère en une seule occurrence (« squeeze »)
- -c : complémente ENSEMBLE1, c'est-à-dire agit sur tous les caractères sauf ceux indiqués
Conversion de casse
echo "$1" | tr '[:lower:]' '[:upper:]' # vers majuscules
echo "$1" | tr '[:upper:]' '[:lower:]' # vers minuscules
echo "$MyString" | tr 'a-z' 'A-Z' # équivalent avec des plages explicites
Bash offre aussi une syntaxe native pour ce cas précis, sans passer par tr :
echo "En minuscule : ${MyString,,}"
echo "En majuscule : ${MyString^^}"
Suppression et compression de caractères
tr -d '\n' < /tmp/sous_system > /tmp/system # supprime tous les retours à la ligne (aplatit le fichier sur une seule ligne)
tr -s ' ' < fichier.txt # compresse les espaces multiples consécutifs en un seul
cat export.log | tr -s ' ' '\n' > export2.txt # remplace chaque suite d'espaces par un retour à la ligne (un mot par ligne)
Alternative sed pour l'opération inverse
Pour rassembler toutes les lignes d'un fichier sur une seule ligne (séparateur espace), sed est mieux adapté que tr :
sed ':a;N;$!ba;s/\n/ /g' /tmp/sous_system
Voir aussi
- Sed — édition de flux, complémentaire à tr pour les substitutions plus complexes