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ção | Descrição |
-eu | Para uma pesquisa que não diferencia maiúsculas de minúsculas |
-r | Para pesquisar recursivamente por todos os arquivos no diretório especificado e seus subdiretórios |
-c | Para exibir o número total de vezes que uma string aparece |
-v | Para exibir as linhas não correspondentes |
-C | Filtro 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.