tac e rev - Invertendo Linhas e Caracteres

tac e rev - Invertendo Linhas e Caracteres

O que voce vai aprender

  • Como tac inverte a ordem das linhas (ultima linha primeiro)
  • Como rev inverte os caracteres em cada linha (abc -> cba)
  • Uma resposta clara para "qual devo usar?" - tac vs rev
  • Truques praticos: lendo logs do mais recente primeiro e combinando ambos

Resumo Rapido (a diferenca principal)

  • Inverter a ordem das linhas -> tac ("cat" escrito ao contrario)
  • Inverter os caracteres dentro de uma linha -> rev (abreviacao de reverse)
  • Tanto o nome quanto o alvo sao invertidos. Quando confuso: tac = linhas / rev = caracteres

Pre-requisitos (ambiente)

  • SO: Ubuntu / qualquer distribuicao Linux comum
  • tac vem com GNU coreutils, rev vem com util-linux. Ambos sao instalados por padrao

1. O que e tac e o que ele pode fazer?

Conclusao: tac imprime as linhas de um arquivo da ultima para a primeira, linha por linha. Seu nome e cat escrito ao contrario.

Lina: Senpai, cat imprime um arquivo de cima para baixo. E se eu quiser ao contrario - de baixo para cima?
Veterano Linny: E exatamente quando voce usa tac. E cat escrito ao contrario, e a funcao corresponde ao nome: "imprimir linhas na ordem inversa."
Lina: Ate o nome e invertido!
Veterano Linny: Exato. Vamos ver um cat normal primeiro.
$ cat fruits.txt
apple
banana
cherry
$ tac fruits.txt
cherry
banana
apple
Lina: As linhas inteiras foram invertidas de baixo para cima! Mas as palavras em si nao mudaram.
Veterano Linny: Esse e o ponto chave. tac so move a ordem das linhas. Ele nunca toca nos caracteres dentro de uma palavra como apple.

O separador padrao e uma nova linha, mas -s altera isso. tac -s ',' file inverte campos separados por virgula em vez de linhas.

2. Por que inverter linhas e util?

Conclusao: Logs adicionam linhas antigas no topo e novas no final, entao tac reordena para ler os eventos mais recentes primeiro.

Lina: Qual e o objetivo de inverter linhas, realmente?
Veterano Linny: O maior uso sao arquivos de log. Novos registros sao adicionados no final, entao a entrada "mais recente" e sempre a ultima.
Lina: Mas eu quero a mais recente, e rolar ate o final toda vez e irritante...
Veterano Linny: E ai que tac brilha. Inverta e a linha mais nova vem primeiro. Combine com head e voce obtem "os ultimos 5 eventos, do mais recente" instantaneamente.
$ tac access.log | head -n 5
192.168.0.9 - GET /login 200
192.168.0.4 - GET /api 500
192.168.0.4 - GET /api 500
192.168.0.7 - GET / 200
192.168.0.2 - GET /about 200

tail mostra as ultimas linhas na ordem original. Se voce quer o tail reordenado do mais recente primeiro, isso e trabalho para tac. Objetivos diferentes, ferramentas diferentes.

3. O que e rev e como e diferente do tac?

Conclusao: rev inverte os caracteres dentro de cada linha da esquerda para a direita. Ele nunca altera a ordem das linhas - um alvo completamente diferente do tac (que inverte linhas).

Lina: tac inverte linhas... entao o que rev inverte?
Veterano Linny: rev inverte os caracteres dentro de uma unica linha. E abreviacao de reverse. Nao a ordem - o conteudo de cada linha e invertido.
Lina: Entao abc vira cba?
Veterano Linny: Exatamente. Vamos comparar no mesmo arquivo.
$ rev fruits.txt
elppa
ananab
yrrehc

tac vs rev (o essencial)

Comando O que inverte apple -> Ordem das linhas
tac a ordem das linhas apple muda
rev caracteres por linha elppa nao muda
Lina: Os nomes sao ambos "reverse", mas o que eles invertem e diferente. tac = linhas, rev = caracteres.
Veterano Linny: Memorize isso e esta pronto. Alias, rev vem de um pacote diferente - util-linux, nao coreutils. Mas ambos estao disponiveis por padrao.

4. O que acontece quando voce combina tac e rev?

Conclusao: tac file | rev inverte tanto a ordem das linhas quanto os caracteres em cada linha. Basta conecta-los com um pipe.

Lina: E se eu quiser inverter tanto as linhas quanto os caracteres?
Veterano Linny: Conecte-os com um pipe. Envie a saida de tac para rev.
$ tac fruits.txt | rev
yrrehc
ananab
elppa
Lina: cherry vem primeiro (linhas invertidas), e yrrehc mostra os caracteres invertidos tambem!
Veterano Linny: Exato, ambas as etapas se aplicam. rev | tac da o mesmo resultado - a ordem nao importa aqui, que e a beleza dos pipes.

rev tambem le a entrada padrao. echo "Linux" | rev retorna xuniL. Nenhum arquivo necessario - experimente atraves de um pipe a qualquer momento.

5. Armadilhas comuns e quando usar qual

Conclusao: tac inverte a ordem das linhas; rev inverte caracteres dentro de uma linha. Mistura-los e o principal erro - quando em duvida, teste em um arquivo pequeno.

O que voce quer Comando
Reordenar linhas de baixo para cima tac file
Ler um log do mais recente primeiro tac log
Inverter caracteres em cada linha rev file
Inverter linhas e caracteres tac file | rev

Erros faceis de evitar

  • Trocar tac e rev (usar rev quando queria inverter linhas, e ver texto "ilegivel")
  • Confundir tail com tac (tail mantem a ordem, tac a inverte)
  • Executar em um arquivo enorme sem pensar - teste com head ou um exemplo pequeno primeiro