Como usar o comando rev no Linux

O comando rev do Linux inverte strings de texto. Este comando pode operar no texto fornecido ou em um arquivo e parece extremamente simples. Mas, como muitos utilitários de linha de comando, seu poder real se torna aparente quando você o combina com outros comandos.

O comando rev é um daqueles utilitários simples do Linux que, à primeira vista, parece uma raridade. Ele executa uma única função: inverte strings. E além de poder imprimir uma página de ajuda rápida (-h) e mostrar seu número de versão (-V), não aceita nenhum opções de linha de comando.

Então, rev inverte as cordas, e é isso? Sem variações ou opções? Bem, sim e não. Sim, não tem permutações, mas não, isso dificilmente é tudo. Este tutorial mostra como combiná-lo para operações poderosas.

Quando você usa rev como um bloco de construção em sequências de comando mais complicadas, ele realmente começa a mostrar seu valor. rev faz parte de um grupo de comandos (como tac e yes) que são facilitadores. É mais fácil apreciar sua utilidade quando você vê como eles tornam o uso de outros comandos mais eficiente.

Usando o comando rev

Usado na linha de comando sem outros parâmetros, rev pega qualquer entrada digitada, reverte-a e a imprime na janela do terminal. Ele continua fazendo isso até que você pressione Ctrl + C para sair.

rev

Se você digitar algum texto e pressionar Enter, fará rev imprimir a string ao contrário – a menos que você forneça um palíndromo, claro.

Passando texto para rev

Você pode usar o eco para canalizar o texto para rev.

echo one two three | rev

Você também pode usar rev para reverter o conteúdo de um arquivo de texto inteiro, linha por linha. Neste exemplo, temos um arquivo contendo uma lista de nomes de arquivos. O arquivo é denominado “filelist.txt”.

rev filelist.txt

Cada linha é lida do arquivo, revertida e impressa na janela do terminal.

  Como transformar sites em aplicativos Linux com o catálogo da Web

Combinando rev com outros comandos

Aqui está um exemplo usando tubulação de entrada que chama rev duas vezes.

Este comando remove o último caractere da string de texto. Isso pode ser útil para remover a pontuação. Precisamos usar o comando cut para tira o personagem.

echo 'Remove punctuation.' | rev | cut -c 2- | rev

Vamos decompô-lo.

echo envia a string para a primeira chamada para rev.
rev inverte a corda e a canaliza para o corte.
A opção -c (caracteres) diz ao cut para retornar uma seqüência de caracteres da string.
A opção 2 diz ao cut para retornar o intervalo de caracteres do caractere dois até o final da linha. Se um segundo número fosse fornecido, como 2 a 5, o intervalo seria de dois a cinco caracteres. Nenhum segundo número significa “até o fim da string”.
A string invertida – sem seu primeiro caractere – é passada para rev, que inverte a string, de modo que ela volta à sua ordem original.

Como cortamos o primeiro caractere da string invertida, cortamos o último caractere da string original. Sim, você poderia fazer isso com sed ou awk, mas esta é uma sintaxe mais fácil.

Separando a última palavra

Podemos usar um truque semelhante para retornar a última palavra da linha.

O comando é semelhante ao último: novamente, ele usa rev duas vezes. As diferenças residem na maneira como o comando recortar é usado para selecionar partes do texto.

echo 'Separate the last word' | rev | cut -d' ' -f1 | rev

Aqui está a análise do comando:

  Como usar o gerenciador de senhas Buttercup no Linux

echo envia a string para a primeira chamada para rev.
rev inverte a corda e a canaliza para o corte.
A opção -d ” (delimitador) diz ao cut para retornar uma sequência de caracteres delimitada por um espaço.
A opção -f1 diz ao cut para retornar a primeira seção da string que não contém o delimitador. Ou seja, da primeira parte da frase até o primeiro espaço.
A primeira palavra invertida é passada para rev, que inverte a string, de modo que ela volta à sua ordem original.

Como extraímos a primeira palavra da string invertida, eliminamos a última palavra da string original. A última palavra da frase foi “palavra” e foi impressa para nós.

Cortando conteúdo de arquivos

Digamos que temos um arquivo contendo uma lista de nomes de arquivos e os nomes de arquivos estão entre aspas. Queremos remover as aspas dos nomes dos arquivos.

Vejamos o arquivo:

less filelist.txt

O conteúdo do arquivo é exibido para nós em menos.

Podemos remover a pontuação de ambas as extremidades de cada linha com o seguinte comando. Este comando usa rev e cut duas vezes.

rev filelist.txt | cut -c 2- | rev | cut -c 2-

Os nomes dos arquivos são listados para nós sem as aspas.

O comando se divide assim:

rev inverte as linhas no arquivo e as canaliza para o corte.
A opção -c (caracteres) diz ao cut para retornar uma seqüência de caracteres de cada linha.
A opção 2 diz ao cut para retornar o intervalo de caracteres do caractere dois até o final de cada linha.
As strings invertidas, sem seus primeiros caracteres, são passadas para rev.
rev inverte as cordas, para que elas voltem à ordem original. Eles são canalizados para o corte uma segunda vez.
A opção -c (caracteres) diz ao cut para retornar uma seqüência de caracteres de cada string.
A opção 2 diz ao cut para retornar o intervalo de caracteres do caractere dois até o final de cada linha. Isso “salta sobre” a aspa inicial, que é o caractere um em cada linha.

  Como instalar os drivers de GPU Nvidia mais recentes no Linux

Muita tubulação

Aqui está um comando que retorna uma lista classificada de cada extensão de arquivo no diretório atual. Ele usa cinco comandos Linux distintos.

ls | rev | cut -d'.' -f1 | rev | sort | uniq

O processo é direto:

ls lista os arquivos no diretório atual. Estes são canalizados para rev.
rev inverte os nomes de arquivo e os canaliza para corte.
cut retorna a primeira parte de cada nome de arquivo até um delimitador. O -d ‘.’ diz ao cut para usar o ponto “.” como o delimitador. A parte dos nomes de arquivo invertidos até o primeiro período são as extensões de arquivo. Estes são canalizados para rev.
rev reverte as extensões de arquivo em sua ordem original. Eles são canalizados.
sort classifica as extensões de arquivo e canaliza os resultados para o uniq.
uniq retorna uma única lista para cada tipo de extensão de arquivo exclusiva. Observe que se não houver extensão de arquivo (como para o makefile e os diretórios Help e gc_help), todo o nome do arquivo será listado.

Para finalizar, adicione a opção de linha de comando -c (contagem) ao comando uniq.

ls | rev | cut -d'.' -f1 | rev | sort | uniq -c

Agora obtemos uma lista ordenada dos diferentes tipos de arquivo no diretório atual com uma contagem de cada um.

Essa é uma frase muito bacana!

drawroF og ot drawkcaB gnioG

Às vezes você tem que voltar para frente. E você geralmente avança mais rápido como parte de uma equipe.

Adicione rotação ao seu repertório de comandos go-to e em breve você estará usando-a para simplificar sequências de comando de outra forma complicadas.