tac e rev - Invertendo Linhas e Caracteres
O que voce vai aprender
- Como
tacinverte a ordem das linhas (ultima linha primeiro) - Como
revinverte os caracteres em cada linha (abc -> cba) - Uma resposta clara para "qual devo usar?" -
tacvsrev - 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
tacvem com GNU coreutils,revvem com util-linux. Ambos sao instalados por padrao
1. O que e tac e o que ele pode fazer?
Conclusao:
tacimprime as linhas de um arquivo da ultima para a primeira, linha por linha. Seu nome ecatescrito ao contrario.
cat imprime um arquivo de cima para baixo. E se eu quiser ao contrario - de baixo para cima?tac. E cat escrito ao contrario, e a funcao corresponde ao nome: "imprimir linhas na ordem inversa."cat normal primeiro.$ cat fruits.txt apple banana cherry
$ tac fruits.txt
cherry banana apple
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
tacreordena para ler os eventos mais recentes primeiro.
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:
revinverte os caracteres dentro de cada linha da esquerda para a direita. Ele nunca altera a ordem das linhas - um alvo completamente diferente dotac(que inverte linhas).
tac inverte linhas... entao o que rev inverte?rev inverte os caracteres dentro de uma unica linha. E abreviacao de reverse. Nao a ordem - o conteudo de cada linha e invertido.abc vira cba?$ 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 |
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 | revinverte tanto a ordem das linhas quanto os caracteres em cada linha. Basta conecta-los com um pipe.
tac para rev.$ tac fruits.txt | rev
yrrehc ananab elppa
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.