Linux / Comando tac: mostrar líneas y registros en orden inverso
tac imprime los registros de un archivo desde el último hasta el primero. El delimitador de registros predeterminado es un salto de línea, por lo que se puede usar para revisar primero las entradas recientes del registro o invertir el orden de las líneas.
En este artículo se explica la sintaxis básica de tac, sus principales opciones, ejemplos de uso real, diferencias con comandos relacionados y precauciones al usarlo.
El comando, cuyo nombre es cat escrito al revés, invierte el orden de los registros delimitados, no los bytes del archivo. Si se especifican varios archivos, cada archivo se procesa en orden, pero los registros dentro de cada archivo se imprimen en orden inverso.
Sintaxis básica
tac [OPCIONES] [ARCHIVO ...]
Las opciones y el comportamiento detallado pueden variar según la implementación y la versión. En el sistema actual, consulte la descripción de los comandos instalados como tac --help y man tac.
Uso básico de tac
Invertir orden de líneas
La última línea se imprime primero.
tac events.log
Procesar varios archivos
El contenido dentro de cada archivo se invierte en orden, y el orden de los argumentos de archivo se mantiene.
tac january.log february.log
Imprimir entrada estándar en orden inverso
También se puede procesar la entrada por tubería, pero se debe recibir toda la entrada para poder determinar el primer registro.
printf 'one\ntwo\nthree\n' | tac
Ejemplo: invertir las líneas sin cambiar sus caracteres
tac imprime en orden inverso las filas, no los caracteres. El orden de los caracteres dentro de cada fila permanece igual.
printf 'first\nsecond\nthird\n' | tac
Ejemplo de salida:
third
second
first
Es útil al leer registros que se acumulan en orden cronológico comenzando desde la fila más reciente, pero no es lo mismo que ordenar según la marca de tiempo.
Opciones principales
| Opciones | Descripción |
|---|---|
-s STRING |
Especifique un delimitador de registro para usar en lugar de un salto de línea. |
-b |
Se trata el delimitador como si estuviera adjunto al principio del siguiente registro. |
-r |
Interpretar la cadena delimitadora como una expresión regular. |
--help |
Mostrar la ayuda de la implementación actualmente instalada. |
Ejemplos de uso práctico
Revisar desde los registros más recientes
Si se trata de registros de texto simples, puede verlos desde la última entrada. Para registros que se agregan continuamente, tail -f es más adecuado.
tac application.log | less
Invertir registros con un delimitador diferente
En GNU tac, use -s para definir el separador de registros.
tac -s '---' records.txt
Encontrar el último elemento que cumpla con la condición
Después de invertir el orden de salida, puede detenerse en la primera coincidencia para encontrar el elemento más reciente sin mostrar todos los resultados en la pantalla.
tac access.log | grep -m 1 'ERROR'
Comparación con tac y comandos relacionados
| Comando | Rol principal | Situaciones adecuadas |
|---|---|---|
tac |
Invertir el orden de los registros | Leer desde la última línea |
cat |
Mostrar el contenido en el orden original | Combinación de salida y archivos |
tail |
Mostrar la parte final | Ver solo las últimas líneas |
sort -r |
Orden inverso según el valor | Ordenar según el contenido |
Precauciones al usar
No es un comando de ordenación
No interpreta el tamaño o los valores de tiempo del contenido, solo invierte el orden actual de los registros.
Los flujos grandes pueden experimentar retrasos
No es adecuado para flujos que no terminan, ya que es necesario conocer el final de la entrada para poder comenzar la salida en orden inverso.
La opción de delimitador verifica la portabilidad
El comportamiento de -s y las expresiones regulares se basa en la implementación de GNU, por lo que consulte el manual del sistema de destino. Para comparar esta herramienta con otras utilidades, consulte la Lista de comandos de uso frecuente en Linux.
FAQ
¿Son tac y sort -r iguales?
No. tac invierte el orden de las líneas actuales, y sort -r ordena las líneas en orden inverso comparando sus valores.
¿Cómo puedo ver solo las últimas 10 líneas al revés?
Se puede combinar como tail -n 10 ARCHIVO | tac.
¿Se pueden ver los registros en tiempo real en orden inverso?
Es difícil procesar la entrada que no termina en orden inverso. Para la supervisión en tiempo real, use tail -f.
¿Se mezclan varios archivos en uno para procesarlos en orden inverso?
Normalmente, cada archivo se lee en el orden de los argumentos y se imprimen los registros de cada archivo en orden inverso.




