Une tâche parfaite pour tr
, en effet. Cela devrait faire ce que vous voulez :
tr 'A-Za-z' 'N-ZA-Mn-za-m'
Chaque caractère dans le premier ensemble sera remplacé par le caractère correspondant dans le deuxième ensemble. Par exemple, A remplacé par N, B remplacé par O, etc. Et puis la même chose pour les lettres minuscules. Tous les autres caractères seront transmis inchangés.
Notez l'absence de [
et ]
là où vous vous y attendriez normalement. Cela est dû au fait que tr
traite littéralement les crochets, non pas comme des expressions de plage. Donc, par exemple, tr -d '[A-Z]'
supprimera les lettres majuscules et les crochets. Si vous voulez conserver vos crochets, utilisez tr -d 'A-Z'
:
$ echo "foo BAR [baz]" | tr -d '[A-Z]'
foo baz
$ echo "foo BAR [baz]" | tr -d 'A-Z'
foo [baz]
C'est la même chose pour les classes de caractères. Par exemple, tr -d '[[:lower:]]'
est probablement une erreur, et devrait être tr -d '[:lower:]'
.
Cependant, dans des situations chanceuses comme celle-ci, vous pouvez vous en sortir en incluant quand même les crochets ! Par exemple, tr "[a-z]" "[A-Z]"
fonctionne accidentellement car les crochets du premier ensemble sont remplacés par des crochets identiques du deuxième ensemble, mais en réalité, c'est une mauvaise habitude à prendre. Utilisez plutôt tr "a-z" "A-Z"
.
1 votes
Tutorial de la commande "tr" sur Wikipedia. en.wikipedia.org/wiki/Tr_%28Unix%29