Como Usar os Comandos ‘cat’ e ‘tac’ com Exemplos no Linux

Este artigo é parte da nossa série Dicas e Truques do Linux, neste artigo vamos cobrir alguns usos básicos do comando cat (comando mais frequentemente usado no Linux) e tac (inverso do comando cat – exibir arquivos em ordem reversa) com alguns exemplos práticos.

Leia também: 13 Exemplos Úteis do Comando ‘cat’ no Linux

Uso Básico do Comando Cat no Linux

O comando Cat, acrônimo para Concatenar, é um dos comandos mais utilizados em sistemas *nix. O uso mais básico do comando é ler arquivos e exibi-los no stdout, ou seja, exibir o conteúdo dos arquivos no seu terminal.

# cat file.txt
View Content of File in Linux

Outro uso do comando cat é ler ou combinar múltiplos arquivos juntos e enviar a saída para um monitor conforme ilustrado nos exemplos abaixo.

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

O comando também pode ser usado para concatenar (juntar) múltiplos arquivos em um único arquivo usando o operador de redirecionamento do Linux “>”.

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

Usando o redirecionador de apêndice, você pode adicionar o conteúdo de um novo arquivo ao final do file-all.txt com a seguinte sintaxe.

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

O comando cat pode ser usado para copiar o conteúdo de um arquivo para um novo arquivo. O novo arquivo pode ser renomeado arbitrariamente. Por exemplo, copie o arquivo da localização atual para o diretório /tmp/.

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

Copie o arquivo da localização atual para o diretório /tmp/ e altere o nome.

# 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 as linhas de saída de um arquivo, incluindo as linhas vazias, use a opção -n.

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

Para exibir apenas o número de cada linha não vazia, use a opção -b.

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

Quer aprender mais sobre o comando cat do Linux? então leia nosso artigo sobre 13 Exemplos Úteis do Comando ‘cat’ no Linux.

Aprenda Como Usar o Comando Tac no Linux

Por outro lado, um comando menos conhecido e menos utilizado em sistemas *nix é o comando tac. Tac é praticamente a versão reversa do comando cat (também soletrado ao contrário) que imprime cada linha de um arquivo começando pela última linha e terminando na primeira linha para a saída padrão da máquina.

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

Uma das opções mais importantes do comando é representada pela opção -s, que separa o conteúdo do arquivo com base em uma string ou palavra-chave do arquivo.

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

Em seguida, o uso mais importante do comando tac é que ele pode fornecer uma grande ajuda para depurar arquivos de log, revertendo a ordem cronológica dos conteúdos do log.

$ tac /var/log/auth.log

Or to display the last lines

$ tail /var/log/auth.log | tac
Saída de Exemplo
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
...

Da mesma forma que o comando cat, o comando tac faz um excelente trabalho em manipular arquivos de texto, mas deve ser evitado em outros tipos de arquivos, especialmente arquivos binários ou em arquivos nos quais a primeira linha denota o programa que o executará.

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