Categories: Tecnologia

Como usar o comando rev no Linux

Fatmawati Achmad Zaenuri / Shutterstock

O revcomando do Linux  inverte cadeias 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 revcomando é um daqueles utilitários simples do Linux que, à primeira vista, parece algo estranho. 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), ele não aceita nenhuma opção de linha de comando .

Então,  revinverte 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ê o usa  rev como um bloco de construção em sequências de comando mais complicadas, ele realmente começa a mostrar seu valor. revfaz parte de um grupo de comandos (como  tace 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, revpega 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, isso revimprimirá a string ao contrário – a menos que você forneça um palíndromo , é claro.

Passando texto para rev

Você pode usar echopara enviar texto para rev.

echo um dois três | rev

Você também pode usar revpara inverter 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.

Combinando rev com outros comandos

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

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

echo 'Remover pontuação.' | rev | cut -c 2- | rev

Vamos decompô-lo.

  • echoenvia a string na primeira chamada para rev.
  • revinverte a corda e a canaliza cut.
  • A -copção (caracteres) informa cutpara retornar uma sequência de caracteres da string.
  • A 2-opção informa cut para retornar o intervalo de caracteres do caractere dois até o final da linha. Se um segundo número fosse fornecido, como 2-5, o intervalo seria de dois a cinco caracteres. Nenhum segundo número significa “até o fim da string”.
  • A string invertida – menos seu primeiro caractere – é passada para a revqual inverte a string, então ela volta à sua ordem original.

Como cortamos o primeiro caractere da string invertida , cortamos o último caractere da string original . Sim, você pode fazer isso com sedou 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  revduas vezes. As diferenças residem na maneira como o cutcomando é usado para selecionar partes do texto.

echo 'Separe a última palavra' | rev | cut -d '' -f1 | rev

Aqui está a análise do comando:

  • echoenvia a string na primeira chamada para rev.
  • revinverte a corda e a canaliza cut.
  • A -d' ' opção (delimitador) informa cutpara retornar uma sequência de caracteres delimitados por um espaço.
  • A -f1 opção diz 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 a revqual inverte a string, de forma que ela volte à 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:

menos filelist.txt

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

Podemos remover a pontuação de ambas as extremidades de cada linha com o seguinte comando. Este comando usa tanto  rev e  cutduas 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 direciona para cut.
  • A -copção (caracteres) informa cutpara retornar uma seqüência de caracteres de cada linha.
  • A 2-opção informa 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.
  • revinverte as cordas, para que elas voltem à ordem original. Eles são canalizados cutuma segunda vez.
  • A -copção (caracteres) informa cutpara retornar uma sequência de caracteres de cada string.
  • A 2-opção informa 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.

Muita tubulação

Este é 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 | classificar | uniq

O processo é direto:

  • ls lista os arquivos no diretório atual. Estes são canalizados para rev.
  • revinverte os nomes dos arquivos e os direciona para cut.
  • cutretorna a primeira parte de cada nome de arquivo até um delimitador. O -d'.' diz cutpara usar o ponto final “.” 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.
  • revreverte as extensões de arquivo em sua ordem original. Eles são canalizados sort.
  • sortclassifica as extensões de arquivo e canaliza os resultados para uniq.
  • uniqretorna 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 dar um toque final a ele, adicione a -copção de linha de comando (contagem) ao uniqcomando.

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

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

Essa é uma linha 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 revao seu repertório de comandos go-to, e em breve você o estará usando para simplificar sequências de comandos complicadas.

maisroot

Recent Posts

O novo aplicativo “PC Manager” da Microsoft se parece muito com o CCleaner

Muitos aplicativos de limpeza estão disponíveis para Windows ao longo dos anos, mas hoje em…

1 ano ago

Como reiniciar um PS4

Seu PlayStation 4 está congelado? Seus jogos favoritos continuam travando? Reiniciar seu PS4 pode resolver…

1 ano ago

Veja por que as reticências são tão assustadoras ao enviar mensagens de texto…

A popularidade das mensagens de texto significou aprender uma forma totalmente nova de comunicação. Você…

1 ano ago

O telescópio James Webb acaba de capturar os “Pilares da Criação”

A foto dos "Pilares da Criação" tirada pelo Telescópio Espacial Hubble é uma das fotos…

1 ano ago

Você poderá baixar o Proton Drive mais cedo do que pensa

O Proton Drive saiu de seu estágio beta há algumas semanas, mas o aplicativo real…

1 ano ago

Como aumentar o zoom no Photoshop

Para ver suas fotos mais de perto ou para uma edição precisa , você pode…

1 ano ago