← Blog

Tr — Traducción y Borrado de Caracteres desde Stdin

Transformación de flujos de texto con tr: reemplazo de delimitadores, conversión de caja, conjuntos POSIX [:lower:]/[:upper:], borrado (-d) y compresión (-s).

1. Operational Scope & Technical Objective

tr transforma un flujo de caracteres en otro: traduce (mapea un set de caracteres a otro), borra (-d) y comprime (-s). A diferencia de sed, no trabaja por líneas ni regex, sino por conjuntos de caracteres (a-z, [:lower:], \t), lo que lo hace la herramienta más simple y veloz para normalizar texto: convertir delimitadores, cambiar caja, eliminar caracteres no deseados o colapsar repeticiones. Es el primer paso de limpieza en cualquier pipeline de parsing.

2. High-Impact Syntax & Command Cheatsheet

# Traducción: sustituir un conjunto por otro
cat sample.txt | tr ',' '\t'
#   reemplaza el delimitador coma por tabulador (normalización de CSV)

cat sample.txt | tr 'a-z' 'A-Z'
#   minúsculas -> mayúsculas (rangos de caracteres)

cat sample.txt | tr '[:lower:]' '[:upper:]'
#   lo mismo usando conjuntos POSIX (más legible y portable)
#   Conjuntos: [:lower:] [:upper:] [:digit:] [:alpha:] [:alnum:] [:space:]

# Borrado de caracteres (-d)
cat sample.txt | tr -d '\r'
#   elimina los retornos de carro (normaliza ficheros Windows -> Unix)

cat sample.txt | tr -d '0-9'
#   elimina todos los dígitos del flujo

# Compresión de repeticiones (-s)
echo "aaabbbccc" | tr -s 'a'
#   aaabbbccc -> abbbccc (colapsa la 'a' repetida)
cat file.txt | tr -s '\n'
#   colapsa líneas en blanco consecutivas (compactar logs)

3. Real-World Offensive/Defensive Scenarios

Normalización de salidas antes de parsear. Un volcado con CRLF o con separadores inconsistentes rompe cut/awk. tr -d '\r' + tr ',' '\t' dejan el flujo en el formato exacto que el siguiente parser espera, sin ficheros intermedios.

Ofuscación y transformación de payloads. tr 'a-z' 'A-Z' o permutaciones de rangos transforman strings (prefijos, cadenas de reconocimiento) al vuelo; ROT13 se implementa con tr '[A-Za-z]' '[N-ZA-Mn-za-m]', el mismo mecanismo usado para decodificar texto ofuscado incautado.

Defensa (logs). tr -s '\n' compacta logs con líneas en blanco repetidas y tr -d '\r' unifica formatos antes del análisis automatizado — pasos baratos que evitan falsos positivos en parsers de SIEM sensibles a espacios o saltos de línea.