O rev
comando 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 rev
comando é 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, 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ê o 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.
Índice
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, isso rev
imprimirá a string ao contrário – a menos que você forneça um palíndromo , é claro.
Passando texto para rev
Você pode usar echo
para enviar texto para rev
.
echo um dois três | rev
Você também pode usar rev
para 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 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 cut
comando para retirar o personagem .
echo 'Remover pontuação.' | rev | cut -c 2- | rev
Vamos decompô-lo.
echo
envia a string na primeira chamada pararev
.rev
inverte a corda e a canalizacut
.- A
-c
opção (caracteres) informacut
para retornar uma sequência de caracteres da string. - A
2-
opção informacut
para 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
rev
qual 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 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 cut
comando é usado para selecionar partes do texto.
echo 'Separe a última palavra' | rev | cut -d '' -f1 | rev
Aqui está a análise do comando:
echo
envia a string na primeira chamada pararev
.rev
inverte a corda e a canalizacut
.- A
-d' '
opção (delimitador) informacut
para retornar uma sequência de caracteres delimitados por um espaço. - A
-f1
opção dizcut
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
rev
qual 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 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 direciona paracut
.- A
-c
opção (caracteres) informacut
para retornar uma seqüência de caracteres de cada linha. - A
2-
opção informacut
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 canalizadoscut
uma segunda vez.- A
-c
opção (caracteres) informacut
para retornar uma sequência de caracteres de cada string. - A
2-
opção informacut
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 pararev
.rev
inverte os nomes dos arquivos e os direciona paracut
.cut
retorna a primeira parte de cada nome de arquivo até um delimitador. O-d'.'
dizcut
para 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
.rev
reverte as extensões de arquivo em sua ordem original. Eles são canalizadossort
.sort
classifica as extensões de arquivo e canaliza os resultados parauniq
.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 dar um toque final a ele, adicione a -c
opção de linha de comando (contagem) ao uniq
comando.
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 rev
ao seu repertório de comandos go-to, e em breve você o estará usando para simplificar sequências de comandos complicadas.