Como usar o comando Grep no Linux

Compreender o comando grep com exemplos práticos para filtrar e exibir facilmente o conteúdo do arquivo

GREP significa ‘Impressão de expressão regular global’. É um utilitário de linha de comando útil fornecido pelo Linux, para pesquisar a linha de texto que corresponde ao padrão fornecido pelo usuário.

grep recebe a entrada do usuário na forma de strings ou palavras que o usuário deseja pesquisar em um arquivo específico. O comando então verifica o arquivo especificado pelo usuário para este padrão e retorna as linhas que correspondem ao padrão fornecido.

Ele faz um excelente trabalho ao filtrar o conteúdo de um arquivo, tornando mais fácil nossa tarefa de pesquisar um conteúdo específico em um ou vários arquivos simultaneamente.

Neste artigo, vamos revisar o funcionamento do grep comando com alguns exemplos práticos em detalhes.

Opções disponíveis com grep comando

Estas são algumas das opções fundamentais que você usará frequentemente com o grep comando.

OpçãoDescrição
-euPara uma pesquisa que não diferencia maiúsculas de minúsculas
-rPara pesquisar recursivamente por todos os arquivos no diretório especificado e seus subdiretórios
-cPara exibir o número total de vezes que uma string aparece
-vPara exibir as linhas não correspondentes
-CFiltro para aquela palavra particular usada separadamente

Usando o grep comando

grep comando é geralmente usado com o tubo (|) Utilitário. Ele pode ser implementado com o tubo de shell quando você quiser usá-lo com alguns outros comandos do Linux. Embora, grep também pode ser usado individualmente sem o tubo (|) Utilitário.

Vejamos algumas das sintaxes básicas do grep comando com e sem o utilitário pipe.

Deixe-me primeiro mostrar a você o arquivo de texto de amostra que irei usar para ilustrar o grep comando.

A ÍNDIA É UM BONITO PAÍS DE PAZ QUE AMA PESSOAS. a índia assenta em três pilares: legislativo, executivo e judiciário. A Índia é um belo país de pessoas que amam a paz. A Índia se preocupa com as pessoas, pois seu recurso coordena a importância das coordenadas cartesianas de todas as coordenadas cartesianas. A seguir estão duas linhas vazias. o uso de carro de boi é uma visão comum na aldeia para as tarefas agrícolas. Este é o final do arquivo de amostra.

grep usado com tubo (|)Utilitário

grep O comando pode ser implementado junto com outros comandos do Linux usando os canais do shell. Tipo, usando o gato comando para exibir o conteúdo do arquivo, mas ao mesmo tempo canalizando a saída usando o grep comando para exibir apenas o conteúdo que você deseja ver. Isso ficará mais claro quando examinarmos o exemplo.

Sintaxe:

[comando] | grep [string]

Exemplo:

cat sample.txt | legislatura grep

Aqui, eu usei o gato comando para exibir algumas linhas do arquivo ‘sample.txt’. Apenas as linhas que contêm a palavra "legislatura" devem ser exibidas e ignorar o resto das linhas.

Saída:

gaurav @ ubuntu: ~ / workspace $ cat sample.txt | grep legislature india assenta em três pilares do legislativo, executivo e judiciário. gaurav @ ubuntu: ~ / workspace $

grep usado sem tubo (|)Utilitário

grep pode até mesmo ser usado diretamente como um comando individual sem usar o tubo ( | ) Utilitário.

Sintaxe:

grep [string_to_be_searched] [nome do arquivo]

Exemplo:

grep India sample.txt

Saída:

A Índia é um belo país de pessoas que amam a paz. A Índia se preocupa com as pessoas como um recurso

Assim, usei o grep comando diretamente para filtrar as linhas que contêm a string ‘Índia’ do arquivo de texto ‘amostra.txt’.

Pesquisa que não diferencia maiúsculas de minúsculas usando grep comando

O Linux é muito cauteloso quanto à diferenciação de maiúsculas e minúsculas quando disparamos os comandos no terminal. Isso requer que o usuário tome cuidado com a caixa da string colocada no comando.

Vamos ver isso por meio de um exemplo.

grep peace sample.txt

Nesse caso, não obteremos uma saída, pois não existe uma palavra como "paz" no arquivo de amostra. Temos a palavra ‘Paz’ com ‘P’ maiúsculo. A palavra é a mesma, mas quando usamos o grep comando sem qualquer opção, ele procura a correspondência exata no arquivo, desconsiderando qualquer alteração na caixa das letras.

Para evitar essa ambigüidade, você pode simplesmente usar o -eu opção que literalmente diz ao grep comando “Esqueça o caso em que coloquei a string e apenas pesquise todos os padrões correspondentes no arquivo.”

Sintaxe:

grep -i [string] [nome do arquivo]

Exemplo:

grep -i peace sample.txt

Saída:

A ÍNDIA É UM BONITO PAÍS DE PAZ QUE AMA PESSOAS. A Índia é um belo país de pessoas que amam a paz.

Todas as linhas correspondentes são exibidas independentemente do caso em que a string correspondente é.

Pesquisa recursiva usando grep comando

O -r opção irá pesquisar todos os arquivos em um diretório e todos os seus subdiretórios que correspondam ao padrão de string fornecido pelo usuário no comando.

Sintaxe:

grep -i -r [string] [file_path]

Exemplo:

grep -i -r tomcat / home / gaurav / workspace

A string aqui é ‘tomcat’ e será pesquisada na área de trabalho do diretório. Todos os subdiretórios e arquivos no diretório "espaço de trabalho" também serão verificados para corresponder ao padrão de string fornecido.

Saída:

./context_log.policy:// catalina.policy - Permissões de política de segurança para Tomcat 7 ./context_log.policy:// Observação: se tomcat-juli.jar estiver em $ {catalina.base} e não em $ {catalina.home }, ./context_log.policy:// grant codeBase "arquivo: $ {catalina.base} /bin/tomcat-juli.jar" {..} ./context_log.policy:grant codeBase "arquivo: $ {catalina.home } /bin/tomcat-juli.jar "{./context_log.policy: permission java.lang.RuntimePermission" accessClassInPackage.org.apache.tomcat.websocket.server "; ./context.xml: ./catalina.properties:# - Tomcat Bootstrap JARs ./catalina.properties:# - Tomcat API JARs ./catalina.properties:# - Tomcat JARs ./catalina.properties:# - Comum não Tomcat JARs ./catalina.properties:org.apache.catalina.startup.TldConfig.jarsToSkip=tomcat7-websocket.jar ./catalina.properties:tomcat.util.buf.StringCache.byte.enabled=true ./catalina.properties:# tomcat.util.buf.StringCache.char.enabled = true ./catalina.properties:#tomcat.util.buf.StringCache.trainThreshold=500000 ./catalina.properties:#tomcat.util.buf.StringCache.cacheSize=5000. /server.xml: pathname = "conf / tomcat-users.xml" /> ./server.xml: 

NOTA: Ao usar o -r opção com o grep precisamos fornecer o caminho do arquivo e não o nome do arquivo

Pesquisando palavras inteiras apenas com grep comando

Muitas vezes, você estará procurando por uma palavra, mas acabará preenchendo seu terminal com as linhas correspondentes que contêm a palavra correspondente, mas não como uma palavra individual. Você pode ver as linhas que contêm algumas palavras cuja subparte é a string que você inseriu.

Ficou confuso com isso? Não se preocupe, é muito mais fácil entender depois que você pegar o exemplo.

Exemplo:

Aqui, desejo pesquisar uma palavra individual ‘carrinho’ e exibir todas as linhas que correspondem a essa palavra no arquivo ‘amostra.txt’.

grep -i cart sample.txt

Saída:

Coordenadas cartesianas importância de todas as coordenadas cartesianas. uso de carroça de boi é uma visão comum na aldeia para o trabalho agrário. A carroça desapareceu enquanto o menino a deixava solta.

Na saída, você pode observar que a palavra 'cartesiano' também contém a palavra 'carrinho' e, portanto, as linhas contendo a palavra 'cartesiano' também são exibidas, embora não desejemos que sejam exibidas.

Você pode usar o -C opção com o grep comando para resolver esta ambigüidade.

Sintaxe:

grep -i -w [string] [nome do arquivo]

Exemplo:

grep -i -w cart sample.txt

Saída:

o uso de carro de boi é uma visão comum na aldeia para as tarefas agrícolas. O carrinho desapareceu quando o menino o deixou solto. 

Agora, quando você tiver usado o -C opção com grep você obterá apenas as linhas em que a palavra 'carrinho' é usada como um todo.

Pesquisa invertida usando grep comando

grep comando também pode ser usado de forma reversa. Podemos usar o grep comando de forma oposta, ocultando as linhas correspondentes e exibindo apenas as linhas onde a correspondência não foi encontrada. Você pode fazer isso usando o -v opção com o grep comando.

Sintaxe:

grep -i -v [string] [nome do arquivo]

Exemplo:

grep -i -v resource sample.txt

Saída:

A ÍNDIA É UM BONITO PAÍS DE PAZ QUE AMA PESSOAS. a índia assenta em três pilares: legislativo, executivo e judiciário. A Índia é um belo país de pessoas que amam a paz. Coordenadas cartesianas importância de todas as coordenadas cartesianas. o uso de carro de boi é uma visão comum na aldeia para as tarefas agrícolas. Este é o final do arquivo de amostra.

Na saída, todas as outras linhas são exibidas, exceto a linha que contém a palavra ‘recurso’.

Contando ocorrências de string correspondente

A saída do grep O comando geralmente é muito longo se os dados do arquivo forem extensos. Quanto mais correspondências, mais longas são as saídas do grep comando. O Linux oferece uma opção onde você pode exibir o número de ocorrências da correspondência.

Sintaxe:

grep -i -c [string] [nome do arquivo]

Exemplo:

grep -i -c india sample.txt

Saída:

gaurav @ ubuntu: ~ / workspace $ grep -i -c india sample.txt 4 gaurav @ ubuntu: ~ / workspace $

Aqui, a saída é um número que é o número de ocorrências da palavra ‘Índia’ no arquivo sample.txt.

NOTA: Eu usei o -eu opção em cada exemplo para estar seguro com o problema de distinção entre maiúsculas e minúsculas. Caso você tenha certeza sobre o caso da palavra que está procurando, pode omitir com segurança o -eu opção.

Conclusão

Aprendemos os usos fundamentais do grep comando nos sistemas Linux neste tutorial. Também aprendemos a exibir diversos conteúdos que melhor atendem às nossas necessidades e a não sobrecarregar o terminal com muitas linhas. grep O comando certamente economizará tempo se for usado para escanear grandes conjuntos de dados.