Saltar la navegación

tr

El comando tr copia la entrada estándar en la salida estándar sustituyendo o borrando los caracteres seleccionados. Su sintaxis general es:

tr [opción...] conjunto1 [conjunto2]

Los conjuntos de caracteres (conjunto1 y conjunto2) se pueden expresar como:

  • Una listas de caracteres normales o de escape (\ n, \ t): ahpqr
  • Un rango: c-h
  • Una repetición exacta: [a*3] coincidiría con aaa.
  • Una repetición tal larga como sea necesario: [a*]
  • Una clase de caracteres: [:alnum:], [:alpha:], [:blank:], etc.

Si usamos tr sin opciones, cada carácter de conjunto1 se empareja con el de su misma posición en conjunto2, y se sustituye cada aparición de un carácter de conjunto1 por su correspondiente pareja. Si algún carácter de conjunto1 se queda sin pareja, se emparejará con el último carácter de conjunto2.

$ who am i
usuario  pts/0        2013-09-05 19:43 (:0)
$ who am i | tr a-z A-Z
USUARIO  PTS/0        2013-09-05 19:43 (:0)

La opción -t es prácticamente igual al caso anterior, con la diferencia de que si algún carácter de conjunto1 no tiene pareja, no se hace nada con ellos y se dejan como están.

Con la opción -c podemos usar tr para sustituir por el último carácter de conjunto2 todo carácter que no coincida con alguno de los de conjunto1.

$ ls
f1.txt  f2.txt  f3.txt  f4.txt
$ ls | tr -c [:alnum:] '\ n'
f1
txt
f2
txt
f3
txt
f4
txt

Con tr también podemos borrar caracteres, para ello usaremos la opción -d y especificaremos solo conjuto1 para indicar los caracteres que queremos borrar.

$ echo "Hola mundo" | tr -d aeiou
Hl mnd

Por último, la opción -s sustituye las repeticiones individuales de los caracteres de conjunto1 por una única aparición del carácter repetido.

$ ls -l
total 60
-rw-r--r-- 1 usuario vboxsf 25969 sep  7 13:10 f1.txt
-rw-r--r-- 1 usuario vboxsf 20981 sep  7 13:10 f2.txt
-rw-r--r-- 1 usuario vboxsf    49 sep  7 22:28 f3.txt
-rw-r--r-- 1 usuario vboxsf    48 sep  7 13:10 f4.txt
$ ls -l | tr -s ' '
total 60
-rw-r--r-- 1 usuario vboxsf 25969 sep 7 13:10 f1.txt
-rw-r--r-- 1 usuario vboxsf 20981 sep 7 13:10 f2.txt
-rw-r--r-- 1 usuario vboxsf 49 sep 7 22:28 f3.txt
-rw-r--r-- 1 usuario vboxsf 48 sep 7 13:10 f4.txt

 

Licencia: licencia de software libre GPL