
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.
Índice
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 pararev.revinverte a corda e a canalizacut.- A
-copção (caracteres) informacutpara retornar uma sequência de caracteres da string. - A
2-opção informacutpara retornar o intervalo de caracteres do caractere dois até o final da linha. Se um segundo número fosse fornecido, como2-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 pararev.revinverte a corda e a canalizacut.- A
-d' 'opção (delimitador) informacutpara retornar uma sequência de caracteres delimitados por um espaço. - A
-f1opção dizcutpara 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:
revinverte as linhas no arquivo e as direciona paracut.- A
-copção (caracteres) informacutpara retornar uma seqüência de caracteres de cada linha. - A
2-opção informacutpara 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 canalizadoscutuma segunda vez.- A
-copção (caracteres) informacutpara retornar uma sequência de caracteres de cada string. - A
2-opção informacutpara 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:
lslista os arquivos no diretório atual. Estes são canalizados pararev.revinverte os nomes dos arquivos e os direciona paracut.cutretorna a primeira parte de cada nome de arquivo até um delimitador. O-d'.'dizcutpara 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 pararev.revreverte as extensões de arquivo em sua ordem original. Eles são canalizadossort.sortclassifica as extensões de arquivo e canaliza os resultados parauniq.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.