Comando Pipe, Grep e Sort em Linux/Unix com exemplos

โšก Resumo Inteligente

Os comandos pipe, grep e sort no Linux e Unix encadeiam e filtram texto: um pipe envia a saรญda de um comando para o prรณximo, o grep busca padrรตes e o sort organiza as linhas, enquanto os filtros transformam os dados entre eles.

  • ๐Ÿ”— Tubo: O sรญmbolo de barra vertical | passa a saรญda de um comando como entrada para o prรณximo.
  • ๐Ÿ“„ Paginaรงรฃo: O comando `cat piped to less`, `pg` ou `more` exibe um arquivo longo uma tela por vez.
  • ๐Ÿ” grep: O comando grep pesquisa em um arquivo linhas que correspondam a uma determinada sequรชncia de caracteres ou padrรฃo.
  • ๐ŸŽš๏ธ Opรงรตes do grep: Opรงรตes como -v, -c, -n, -i e -l invertem, contam, numeram, ignoram maiรบsculas e minรบsculas e listam arquivos.
  • ๐Ÿ”ค ordenar: O comando sort ordena as linhas de um arquivo, com as opรงรตes -r, -n e -f para ordenaรงรฃo reversa, numรฉrica e sem distinรงรฃo entre maiรบsculas e minรบsculas, respectivamente.
  • ๐Ÿงช Filtros: Comandos de filtro como grep, sort, awk, sed e wc processam a entrada encadeada e produzem a saรญda.
  • ๐Ÿค– Ajuda da IA: Assistentes de IA e o GitHub Copilot podem criar e explicar pipelines de pipe, grep e sort.

Comandos pipe, grep e sort no Linux e Unix com exemplos

Pipes, grep e sort estรฃo entre as ferramentas mais usadas no Linux linha de comando, pois permitem conectar pequenos comandos em um fluxo de trabalho poderoso. Esta pรกgina explica cada um deles com exemplos prรกticos e, em seguida, mostra como os filtros os interligam.

O que รฉ um tubo no Linux?

O pipe รฉ um comando no Linux que permite usar dois ou mais comandos de forma que a saรญda de um comando sirva como entrada para o prรณximo. Em resumo, a saรญda de cada processo alimenta diretamente como entrada o prรณximo, como um pipeline. O sรญmbolo '|' representa um pipe.

Os pipes permitem combinar dois ou mais comandos simultaneamente e executรก-los consecutivamente. Vocรช pode usar comandos poderosos que realizam tarefas complexas em um instante.

Vamos entender isso com um exemplo.

Ao usar o comando 'cat' para visualizar um arquivo que abrange vรกrias pรกginas, o prompt pula rapidamente para a รบltima pรกgina do arquivo, e vocรช nรฃo vรช o conteรบdo do meio.

Para evitar isso, vocรช pode redirecionar a saรญda do comando 'cat' para o comando 'less', que mostra apenas o conteรบdo correspondente a um comprimento de rolagem por vez.

cat filename | less

Uma ilustraรงรฃo tornaria isso mais claro. O diagrama abaixo mostra como um pipe passa a saรญda de um comando para o prรณximo.

Diagrama de um pipe Linux passando a saรญda de um comando como entrada para o prรณximo.

Comandos 'pg' e 'mais'

Em vez de 'less', vocรช tambรฉm pode usar o comando 'pg' ou 'more':

cat Filename | pg

or

cat Filename | more

Vocรช poderรก entรฃo visualizar o arquivo em partes menores e rolar a pรกgina para baixo pressionando a tecla Enter. A captura de tela abaixo mostra um arquivo paginado com o comando "more".

O comando `cat` redirecionava a saรญda para o comando `more`, paginando um arquivo longo uma tela por vez.

O comando 'grep'

Suponha que vocรช queira procurar informaรงรตes especรญficas, como um cรณdigo postal, em um arquivo de texto.

Vocรช pode folhear o conteรบdo manualmente para trace as informaรงรตes. Uma opรงรฃo melhor รฉ usar o grep O comando analisa o documento em busca das informaรงรตes desejadas e apresenta o resultado no formato que vocรช quer.

Sintaxe:

grep search_string

Vejamos como funciona. A captura de tela abaixo mostra o resultado da pesquisa.

O comando grep estรก procurando as strings "Apple" e "Eat" no arquivo de exemplo.

Neste exemplo, o comando grep pesquisou o arquivo 'sample' pelas strings 'Apple' e 'Eat'. As seguintes opรงรตes podem ser usadas com este comando.

Opรงรฃo funรงรฃo
-v Mostra todas as linhas que nรฃo correspondem ร  string pesquisada
-c Exibe apenas a contagem de linhas correspondentes
-n Mostra a linha correspondente e seu nรบmero
-i Corresponde a letras maiรบsculas e minรบsculas.
-l Mostra apenas o nome do arquivo com a string

Vamos tentar a opรงรฃo '-i' no mesmo arquivo usado acima. A captura de tela abaixo mostra o resultado sem distinรงรฃo entre maiรบsculas e minรบsculas.

grep -i realiza uma busca que ignora maiรบsculas e minรบsculas pela letra a

Usando a opรงรฃo '-i', o grep filtrou a string 'a' (sem distinรงรฃo entre maiรบsculas e minรบsculas) de todas as linhas.

O comando 'classificar'

Este comando ajuda a organizar o conteรบdo de um arquivo em ordem alfabรฉtica.

A sintaxe deste comando รฉ:

sort Filename

Considere o conteรบdo de um arquivo, mostrado com o comando `cat` abaixo.

O comando cat mostra o conteรบdo nรฃo ordenado do arquivo abc.

Executar o comando de classificaรงรฃo organiza essas linhas em ordem alfabรฉtica, como mostrado abaixo.

O comando sort organiza o conteรบdo do arquivo abc em ordem alfabรฉtica.

Existem tambรฉm extensรตes para este comando, que estรฃo listadas abaixo.

Opรงรฃo funรงรฃo
-r Reverseclassificaรงรฃo s
-n Classifica numericamente
-f Classificaรงรฃo sem distinรงรฃo entre maiรบsculas e minรบsculas

O exemplo abaixo mostra a classificaรงรฃo reversa do conteรบdo do arquivo 'abc'.

O comando sort -r inverte a ordem do conteรบdo do arquivo abc.

O que รฉ um filtro?

O Linux possui muitos comandos de filtro, como awk, grep, sed, spell e wc. Um filtro recebe a entrada de um comando, realiza algum processamento e fornece a saรญda.

Ao encadear dois comandos, a saรญda "filtrada" do primeiro comando รฉ passada para o prรณximo. O diagrama abaixo ilustra como um filtro se encaixa em um pipeline.

Diagrama de um filtro Linux que recebe entrada via pipe, a processa e produz saรญda.

Vamos entender isso com a ajuda de um exemplo. Temos o seguinte arquivo 'sample', mostrado com o comando cat abaixo.

O comando `cat` exibe o conteรบdo do arquivo de amostra antes da filtragem.

Desejamos destacar apenas as linhas que nรฃo contรชm o caractere 'a', mas o resultado deve estar em ordem inversa. Para isso, pode-se usar a seguinte sintaxe:

cat sample | grep -v a | sort -r

Vejamos o resultado, mostrado na captura de tela abaixo.

O comando `cat` foi processado com `grep -v` e `sort -r`, produzindo linhas em ordem inversa sem a letra `a`.

Perguntas Frequentes

Um pipe (|) envia a saรญda de um comando diretamente para outro, encadeando-os. O redirecionamento (> e <) conecta um comando a um arquivo, escrevendo a saรญda em um arquivo ou lendo a entrada de um. Pipes conectam comandos; redirecionamentos conectam comandos e arquivos.

grep significa Global Regular Expression Print (Impressรฃo Global de Expressรฃo Regular). Ele examina um arquivo ou entrada linha por linha e imprime cada linha que corresponde ao padrรฃo fornecido. O nome vem do antigo comando g/re/p do editor ed, que realizava a mesma busca.

O comando `sort` possui a opรงรฃo `-u` que ordena e remove linhas duplicadas em uma รบnica etapa: `sort -u arquivo`. Vocรช tambรฉm pode usar o comando `sort` com `uniq`, como em `sort arquivo | uniq`, jรก que `uniq` remove apenas duplicatas que jรก estejam adjacentes.

Finalize o pipeline com redirecionamento: `cat sample | grep -va | sort -r > result.txt` grava a saรญda final em um arquivo. Para visualizar a saรญda na tela e salvรก-la simultaneamente, utilize o comando `tee`.

O comando `grep` busca dentro de arquivos por linhas que correspondam a um padrรฃo de texto. O comando `find` localiza arquivos e diretรณrios por nome, tamanho, tipo ou data. Resumindo, o `grep` examina o conteรบdo dos arquivos, enquanto o `find` busca os arquivos em toda a รกrvore de diretรณrios.

O comando `tee` lรช de um pipe e escreve os dados simultaneamente na tela e em um ou mais arquivos, por exemplo, `grep error log | tee errors.txt`. Ele permite salvar a saรญda intermediรกria sem interromper o fluxo de trabalho.

Assistentes de IA podem sugerir a sequรชncia correta de comandos encadeados a partir de uma solicitaรงรฃo em linguagem natural, explicar parรขmetros desconhecidos do grep ou do sort e identificar erros em um pipeline. Ferramentas de aprendizado de mรกquina tambรฉm analisam a saรญda de logs encadeados para sinalizar anomalias que a filtragem manual nรฃo detectaria.

Sim. Travas deslizantes portรกteis Copiloto do GitHub ร‰ possรญvel gerar fluxos de trabalho que combinam os comandos cat, grep e sort a partir de um breve comentรกrio descrevendo o que vocรช precisa, e executar os comandos conforme vocรช digita. RevAnalise qualquer pipeline sugerido em relaรงรฃo aos dados de amostra, especialmente as opรงรตes que reordenam ou excluem linhas.

Resuma esta postagem com: