O Comando rev no Linux: Invertendo Strings com Versatilidade
No universo do Linux, o comando rev
se destaca pela sua simplicidade e eficácia na inversão de strings de texto. Este utilitário opera diretamente sobre o texto fornecido ou em arquivos, apresentando uma função básica, mas que, combinada com outros comandos, revela seu verdadeiro potencial.
O rev
é uma ferramenta que, à primeira vista, pode parecer trivial. Sua única tarefa é inverter a ordem dos caracteres em uma string. Além de exibir uma página de ajuda rápida com -h
e mostrar a versão com -V
, ele não oferece outras opções diretas. Mas não se engane, sua simplicidade esconde um grande poder.
Apesar de não apresentar variações ou opções complexas, a verdadeira força do rev
reside na sua capacidade de ser integrado em cadeias de comandos mais elaboradas. Ele se junta a outros utilitários como tac
e yes
, que são facilitadores, tornando o uso de outros comandos mais prático e eficiente.
Utilização Básica do Comando rev
Quando executado na linha de comando sem parâmetros adicionais, o rev
aguarda a entrada do usuário, inverte cada string digitada e a exibe no terminal. O processo continua até que você pressione Ctrl + C
para interromper a execução.
rev
Ao inserir texto e pressionar Enter
, o rev
exibirá a string invertida, a menos que você digite um palíndromo, é claro.
Direcionando Texto para o rev
O comando echo
pode ser utilizado para enviar texto diretamente para o rev
através de um pipe (|
). Isso permite que você manipule strings pré-definidas.
echo uma duas três | rev
O rev
também pode inverter o conteúdo de um arquivo de texto linha por linha. No exemplo abaixo, um arquivo chamado “lista_arquivos.txt” contém uma série de nomes de arquivos.
rev lista_arquivos.txt
Cada linha do arquivo é lida, invertida e apresentada no terminal.
Combinando rev com Outros Comandos
A combinação do rev
com outros comandos através de pipes abre um leque de possibilidades. Considere este exemplo que utiliza o rev
duas vezes:
Este comando remove o último caractere de uma string, o que pode ser útil para remover pontuação. Para isso, combinamos o rev
com o comando cut
.
echo 'Remova a pontuação.' | rev | cut -c 2- | rev
Vamos analisar o funcionamento:
O echo
envia a string para a primeira chamada do rev
.
O rev
inverte a string e a envia para o cut
.
A opção -c
(caracteres) instrui o cut
a extrair uma sequência de caracteres da string.
A opção 2-
instrui o cut
a extrair todos os caracteres a partir do segundo até o final da linha. Sem um segundo número, ele assume “até o final da string”.
A string invertida, sem seu primeiro caractere, é enviada de volta para o rev
, que a inverte novamente, retornando-a à sua forma original.
Ao remover o primeiro caractere da string invertida, eliminamos o último caractere da string original. Embora seja possível alcançar o mesmo resultado com sed
ou awk
, esta abordagem com rev
é notavelmente mais direta.
Extraindo a Última Palavra
Um truque similar pode ser usado para extrair a última palavra de uma linha.
O comando é similar ao anterior, usando rev
duas vezes. As diferenças residem na maneira como o cut
é utilizado para selecionar partes específicas do texto.
echo 'Separe a última palavra' | rev | cut -d' ' -f1 | rev
Análise do comando:
echo
envia a string para a primeira chamada do rev
.
O rev
inverte a string e a envia para o cut
.
A opção -d ' '
(delimitador) instrui o cut
a usar o espaço como delimitador.
A opção -f1
instrui o cut
a extrair a primeira seção da string que não contém o delimitador, ou seja, a primeira palavra.
A primeira palavra invertida é então enviada para o rev
, que a inverte novamente, retornando-a à sua forma original.
Ao extrair a primeira palavra da string invertida, removemos a última palavra da string original. No exemplo, a última palavra “palavra” foi extraída com sucesso.
Manipulando Conteúdo de Arquivos
Imagine um arquivo contendo nomes de arquivos entre aspas. Para remover essas aspas, podemos empregar uma sequência de comandos usando rev
e cut
.
Exibindo o conteúdo do arquivo:
less lista_arquivos.txt
O conteúdo do arquivo é exibido com o comando less
.
Para remover as aspas no início e no final de cada linha, utilizamos o seguinte comando, empregando rev
e cut
duas vezes:
rev lista_arquivos.txt | cut -c 2- | rev | cut -c 2-
Os nomes dos arquivos são exibidos sem as aspas.
O comando funciona da seguinte forma:
O rev
inverte as linhas do arquivo e as envia para o cut
.
A opção -c
(caracteres) instrui o cut
a extrair sequências de caracteres de cada linha.
A opção 2-
instrui o cut
a extrair os caracteres do segundo em diante.
As strings invertidas, sem seus primeiros caracteres, são enviadas para o rev
.
O rev
inverte as strings, retornando-as à sua forma original, e as envia novamente para o cut
.
A opção -c
(caracteres) instrui o cut
a extrair sequências de caracteres de cada string.
A opção 2-
instrui o cut
a extrair os caracteres do segundo em diante, pulando assim a aspa inicial.
Pipes Complexos
Um comando mais elaborado que demonstra a versatilidade do rev
é a listagem classificada das extensões de arquivos do diretório atual. Este comando emprega cinco comandos Linux distintos.
ls | rev | cut -d'.' -f1 | rev | sort | uniq
O processo é o seguinte:
ls
lista os arquivos do diretório atual e os envia para o rev
.
O rev
inverte os nomes de arquivos e os envia para o cut
.
O cut
extrai a primeira parte de cada nome até um delimitador. A opção -d '.'
instrui o cut
a usar o ponto “.
” como delimitador. A parte dos nomes de arquivo invertidos até o primeiro ponto são as extensões dos arquivos. Essas extensões são enviadas para o rev
.
O rev
inverte as extensões de arquivo para a ordem original, e as envia para o sort
.
O sort
classifica as extensões e as envia para o uniq
.
O uniq
retorna uma lista única de cada tipo de extensão de arquivo. Note que, se não houver extensão (como em arquivos Makefile ou diretórios), o nome completo do arquivo será listado.
Para aprimorar ainda mais, adicionamos a opção -c
(contagem) ao comando uniq
.
ls | rev | cut -d'.' -f1 | rev | sort | uniq -c
Agora, obtemos uma lista ordenada dos tipos de arquivos no diretório, com a quantidade de cada tipo.
Uma maneira elegante de usar o terminal!
Invertendo para Avançar
Às vezes, é preciso ir para trás para avançar. E geralmente, é mais rápido avançar em equipe.
Ao integrar o rev
ao seu arsenal de comandos, você poderá simplificar sequências de comandos que seriam, de outra forma, mais complexas. Experimente, e descubra o poder da inversão!