Domine o Comando `rev` no Linux: Inversão de Strings com Truques Incríveis!

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!