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