Como usar o comando rev no Linux
O comando rev do Linux inverte as sequências de texto. Esse comando pode operar no texto fornecido ou em um arquivo e parece enganosamente 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 desses utilitários Linux simples que, à primeira vista, parece ser uma espécie de esquisitice. Ele executa uma única função: inverte as seqüências de caracteres. E além de poder imprimir uma página de ajuda rápida (-h) e mostrar seu número de versão (-V), ela não aceita nenhuma opção de linha de comando.
Então, rev inverte strings, e é isso? Nenhuma variação ou opção? Bem, sim e não. Sim, não tem permutações, mas não, 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 comandos mais complicadas, ele realmente começa a mostrar o seu valor. rev é um 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 eficientes.
Usando o comando rev
Usado na linha de comando sem outros parâmetros, rev pega qualquer entrada digitada, inverte-a e depois 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, ele fará rev imprimir a seqüência de caracteres em sentido inverso - a menos que você forneça um palíndromo, é claro.
Passando texto para rev
Você pode usar o eco para canalizar texto para rev.
echo um dois três | rev
Você também pode usar rev para reverter o conteúdo de um arquivo inteiro de texto, linha por linha. Neste exemplo, temos um arquivo contendo uma lista de nomes de arquivos. O arquivo é chamado “filelist.txt”.
rev filelist.txt
IMAGEM_4
Cada linha é lida do arquivo, invertida e depois é impresso na janela do terminal.
Combinando rev com Outros Comandos
Aqui está um exemplo usando a tubulação de entrada que chama o rev duas vezes.
Este comando remove o último personagem fora da seqüência de texto. Isso pode ser útil para remover a pontuação. Precisamos usar o comando cut para retirar o caractere.
echo 'Remover pontuação'. | rev | corte -c 2- | rev
Vamos dividir isso.
- echo envia a string para a primeira chamada para rev.
- rev inverte a string e a canaliza para o corte.
- A opção -c (characters) 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-5, o intervalo seria de dois a cinco caracteres. Nenhum segundo número significa “até o final da string”.
- A string invertida - menos seu primeiro caractere - é passada para rev, que inverte a string, então volta para a ordem original.
Como aparamos o primeiro caractere da string invertida, recortamos 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 similar para retornar a última palavra da linha .
O comando é semelhante ao último: novamente, ele usa rev duas vezes. As diferenças estão na maneira como o comando cut é usado para selecionar partes do texto.
echo 'Separe a última palavra' | rev | corte -d '' -f1 | rev
Aqui está o detalhamento do comando:
- echo envia a string para a primeira chamada para rev.
- rev inverte a string e a canaliza para o corte.
- A opção -d '' (delimitador) diz ao cut para retornar uma sequência de caracteres delimitados por um espaço.
- A opção -f1 diz cut para retornar a primeira seção da string que não contém o delimitador. Em outras palavras, a primeira parte da sentença até o primeiro espaço.
- A primeira palavra invertida é passada para rev, que inverte a string, então está de volta à sua ordem original.
Como extraímos a primeira palavra da string invertida, recortamos a última palavra da string original. A última palavra da frase era "palavra" e foi impressa para nós.
Cortando o conteúdo dos arquivos
Digamos que temos um arquivo contendo uma lista de nomes de arquivos, e nomes de arquivos estão entre aspas. Queremos remover as aspas dos nomes dos arquivos.
Vamos dar uma olhada no arquivo:
menos 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 | corte -c 2- | rev | cut -c 2 -
IMAGEM_9
Os nomes dos arquivos são listados para nós sem as aspas.
O comando é dividido assim:
- rev inverte as linhas no arquivo e as canaliza para o corte.
- A opção -c (characters) diz ao cut para retornar uma sequência de caracteres de cada line.
- 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, menos seus primeiros caracteres, são passadas para rev.
- rev inverte as strings, então elas retornam ao pedido original. Eles são canalizados para o corte uma segunda vez.
- A opção -c (characters) diz ao cut para retornar uma seqüência de caracteres de cada string.
- A opção 2 diz "cut to" retorna o intervalo de caracteres do caractere dois até o final de cada linha. Este "salta" as aspas, que é o caractere um em cada linha.
Um monte de tubulação
Aqui está um comando que retorna uma lista ordenada de cada extensão de arquivo no diretório atual. Ele usa cinco comandos distintos do Linux.
ls | rev | corte -d '.' -f1 | rev | ordenar | uniq
O processo é direto:
- ls lista os arquivos no diretório atual. Estes são canalizados para rev.
- rev inverte os nomes dos arquivos e os canaliza para o corte.
- corte retorna a primeira parte de cada nome de arquivo para um delimitador. O -d '.' diz corte para usar o período "." como o delimitador. A parte dos nomes de arquivos invertidos até o primeiro período são as extensões de arquivo. Estes são canalizados para rev.
- rev inverte as extensões de arquivo na ordem original. Eles são canalizados para a classificação.
- classifica as extensões de arquivo e canaliza os resultados para uniq.
- uniq retorna uma listagem única para cada tipo de extensão de arquivo exclusiva. Observe que, se não houver uma extensão de arquivo (como para o makefile e os diretórios Help e gc_help), o nome do arquivo inteiro será listado.
Para dar um toque final a ele, adicione -c opção de linha de comando (count) para o comando uniq.
ls | rev | corte -d '.' -f1 | rev | ordenar | uniq -c
Agora temos uma lista ordenada dos diferentes tipos de arquivos no diretório atual com uma contagem de cada um.
Isso é muito bonito one-liner!
desenhando e tirando gArgAo
Às vezes você tem que voltar para avançar. E você normalmente avança mais rápido como parte de um time.
Adicione rev a seu repertório de comandos go-to, e em breve você o usará para simplificar as complicadas sequências de comandos.
Via: How to Geek
Nenhum comentário