Cómo usar los comandos ‘cat’ y ‘tac’ con ejemplos en Linux

Este artículo es parte de nuestra serie Trucos y consejos de Linux, en este artículo cubriremos algunos usos básicos del comando cat (el comando más utilizado en Linux) y tac (inverso del comando cat – muestra los archivos en orden inverso) con algunos ejemplos prácticos.

Leer también: 13 Ejemplos útiles del comando ‘cat’ en Linux

Uso básico del comando Cat en Linux

Cat, acrónimo de Concatenate, es uno de los comandos más utilizados en sistemas *nix. El uso más básico del comando es leer archivos y mostrarlos en stdout, lo que significa mostrar el contenido de los archivos en tu terminal.

# cat file.txt
View Content of File in Linux

Otro uso del comando cat es leer o combinar varios archivos y enviar la salida a un monitor, como se ilustra en los ejemplos a continuación.

# cat file1.txt file2.txt file3.txt
View Content of Multiple Files

El comando también se puede utilizar para concatenar (unir) varios archivos en un solo archivo utilizando el operador de redirección “>” de Linux.

# cat file1.txt file2.txt file3.txt > file-all.txt
Join Multiple Files in Linux

Usando el redireccionador de anexos, puedes agregar el contenido de un nuevo archivo al final de file-all.txt con la siguiente sintaxis.

# cat file4.txt >> file-all.txt
Append Content File to New File

El comando cat se puede utilizar para copiar el contenido de un archivo a un nuevo archivo. El nuevo archivo puede ser renombrado arbitrariamente. Por ejemplo, copia el archivo desde la ubicación actual al directorio /tmp/.

# cat file1.txt > /tmp/file1.txt 
Copy Content of File to New File

Copia el archivo desde la ubicación actual al directorio /tmp/ y cambia su nombre.

# cat file1.txt > /tmp/newfile.cfg
Copy File to /tmp Location

A less usage of the cat command is to create a new file with the below syntax. When finished editing the file hit CTRL+D to save and exit the new file.

# cat > new_file.txt
Create New File using Cat Command

Para numerar todas las líneas de salida de un archivo, incluyendo las líneas vacías, utiliza el modificador -n.

# cat -n file-all.txt
Add Numbers to Lines in File

Para mostrar únicamente el número de cada línea no vacía, utiliza el modificador -b.

# cat -b file-all.txt
Print Line Numbers in File

¿Quieres aprender más sobre el comando cat en Linux? Entonces lee nuestro artículo sobre 13 ejemplos útiles del comando ‘cat’ en Linux.

Aprende cómo utilizar el comando Tac en Linux

Por otro lado, un comando menos conocido y menos utilizado en sistemas *nix es el comando tac. Tac es prácticamente la versión inversa del comando cat (también escrito al revés) que imprime cada línea de un archivo empezando desde la última línea y terminando en la primera línea en la salida estándar de tu máquina.

# tac file-all.txt
Print Content File in Reverse Order

Una de las opciones más importantes del comando está representada por el modificador -s, que separa el contenido del archivo basado en una cadena o palabra clave del archivo.

# tac file-all.txt --separator "two"
Remove Matching String in File

Además, otro uso importante del comando tac es que puede ofrecer una gran ayuda para depurar archivos de registro, invirtiendo el orden cronológico del contenido del registro.

$ tac /var/log/auth.log

Or to display the last lines

$ tail /var/log/auth.log | tac
Salida de ejemplo
tecmint@tecmint ~ $ tac /var/log/auth.log
pr  6 16:09:01 tecmint CRON[17714]: pam_unix(cron:session): session closed for user root
Apr  6 16:09:01 tecmint CRON[17714]: pam_unix(cron:session): session opened for user root by (uid=0)
Apr  6 16:05:01 tecmint CRON[17582]: pam_unix(cron:session): session closed for user root
Apr  6 16:05:01 tecmint CRON[17583]: pam_unix(cron:session): session closed for user root
Apr  6 16:05:01 tecmint CRON[17583]: pam_unix(cron:session): session opened for user root by (uid=0)
Apr  6 16:05:01 tecmint CRON[17582]: pam_unix(cron:session): session opened for user root by (uid=0)
Apr  6 16:00:01 tecmint CRON[17434]: pam_unix(cron:session): session closed for user root
....
tecmint@tecmint ~ $ tail /var/log/auth.log | tac
Apr  6 16:09:01 tecmint CRON[17714]: pam_unix(cron:session): session closed for user root
Apr  6 16:09:01 tecmint CRON[17714]: pam_unix(cron:session): session opened for user root by (uid=0)
Apr  6 16:05:01 tecmint CRON[17582]: pam_unix(cron:session): session closed for user root
Apr  6 16:05:01 tecmint CRON[17583]: pam_unix(cron:session): session closed for user root
Apr  6 16:05:01 tecmint CRON[17583]: pam_unix(cron:session): session opened for user root by (uid=0)
Apr  6 16:05:01 tecmint CRON[17582]: pam_unix(cron:session): session opened for user root by (uid=0)
Apr  6 16:00:01 tecmint CRON[17434]: pam_unix(cron:session): session closed for user root
Apr  6 16:00:01 tecmint CRON[17434]: pam_unix(cron:session): session opened for user root by (uid=0)
Apr  6 15:55:02 tecmint CRON[17194]: pam_unix(cron:session): session closed for user root
Apr  6 15:55:01 tecmint CRON[17195]: pam_unix(cron:session): session closed for user root
...

Al igual que el comando cat, tac hace un excelente trabajo al manipular archivos de texto, pero se debe evitar en otros tipos de archivos, especialmente en archivos binarios o en archivos donde la primera línea indica el programa que lo ejecutará.

Source:
https://www.tecmint.com/learn-linux-cat-command-and-tac-command/