El shell de linux: Comando tr | Algo de Linux

lunes, 3 de marzo de 2008

El shell de linux: Comando tr

tr es un filtro que nos permite cambiar una determinada información de un archivo por otra.
Cambia cada uno de los caracteres especificados en el conjunto inicial por los caracteres especificados en el conjunto final.
El fichero de origen o fichero destino lo especificamos con los caracteres de redirección: < ó >.

Veamos un par de ejemplos o tres:
tr ':' ' ' < /etc/passwd > ficheropasswd
tr '[a-z]' '[A-Z]' <> listaalumnosmayusculas
tr ' ' '\n' <> lineasusuarios
tr -s " " <> prueba2

Parámetros útiles:
  • -s : Sustituye un conjunto de caracteres repetidos por uno sólo. Es muy útil cuando hay secuencias de caracteres que queremos borrar:
tr -s " " <> ficherodestino
  • -c : Hace que se traduzcan todos los caracteres que no se encuentren especificados en el primer parámetro. En el siguiente ejemplo se traduce por una ? todo lo que no sean letras o números.
tr -c '[a-z][A-Z][0-9]' ? <> ficherodestino
  • -d : Borra los caracteres que especifiquemos.
tr -d '[a-z][0-9]' ? <> ficherodestino
Otro ejemplo práctico que uso en ocasiones cuando quiero conseguir una lista, convirtiendo los caracteres de nueva línea en espacios:
  • tr '\n' ' ' < /etc/pkgsync/musthave > listaenunasolalinea

3 comentarios:

Anónimo dijo...

como cambiamos un carácter por varios??

Por ejemplo, si queremos cambiar una coma por 2 guiones ( tr ',' '--'), esto no funciona, solo cambia por 1 guión ...

Esteban M. Navas dijo...

Eso debes hacerlo con otro comando, como por ejemplo: sed.

Jorge dijo...

Muchas gracias, me ha resultado muy útil la entrada!