Neste artigo, explicaremos o uso do utilitário grep com diferentes exemplos. Usaremos o Debian 10 para explicar os comandos e métodos mencionados neste artigo.
Instalando Grep
Grep vem instalado na maioria das distribuições Linux. No entanto, caso esteja faltando em seu sistema, você pode instalá-lo usando o seguinte método no Terminal:
$ sudo apt-get install grepUsando Grep
Aqui está a sintaxe básica do comando grep. Começa com grep seguido por algumas opções e critérios de pesquisa e termina com o nome do arquivo.
$ grep [opções] PADRÃO [ARQUIVO…]Pesquisar por arquivos
Para pesquisar um nome de arquivo em um diretório que contém uma string específica, você pode usar o grep da seguinte maneira:
$ ls -l | grep -i “stringPor exemplo, para pesquisar um nome de arquivo que contenha uma string “teste“, O comando seria:
$ ls -l | grep -i testEste comando lista todos os arquivos que contêm a string “teste”.
Procure por uma string em um arquivo
Para pesquisar uma string em um arquivo específico, você pode usar a seguinte sintaxe de comando:
$ grep “string” nome do arquivoPor exemplo, para pesquisar uma string “teste”Em um arquivo chamado testfile1, nós usamos o seguinte comando:
$ grep “funcionário” testfile1
A saída acima retornou a frase do testfile1 que contém a string “empregado”.
Procure por uma string em vários arquivos
Para pesquisar uma string em vários arquivos, você pode usar a seguinte sintaxe de comando:
$ grep “string” nomedoarquivo1 nomedoarquivo2Por exemplo, para pesquisar por uma string “funcionário” em nossos dois arquivos testfile1 e testfile2, usamos o seguinte comando:
$ grep “funcionário” testfile1 testfile2
O comando acima irá listar todas as linhas que contêm a string “funcionário” de ambos os arquivos testfile1 e testfile2.
Você também pode usar um caractere curinga se todos os nomes de arquivos começarem com o mesmo texto.
$ grep “string” nome do arquivo *Por exemplo, se tomarmos o exemplo acima em que nossos nomes de arquivo foram testfile1 e testfile2 , o comando seria:
$ grep “funcionário” testfile *
Procure por uma string em um arquivo, ignorando a caixa da string
Na maioria das vezes, você encontrou isso quando pesquisa por algo usando grep, mas não recebe uma saída. Isso acontece devido a uma incompatibilidade de maiúsculas e minúsculas durante a busca por uma string. Como em nosso exemplo, se usarmos por engano “Empregado" em vez de "empregado”, Ele retornará nil, pois nosso arquivo contém a string“empregado”Em letras minúsculas.
Você pode dizer ao grep para ignorar o caso da string de pesquisa usando o sinalizador -i após o grep da seguinte maneira:
$ grep -i nome de arquivo “string”
Ao usar o sinalizador -i, o comando executará a pesquisa sem distinção entre maiúsculas e minúsculas e retornará todas as linhas contendo a string “empregado”Nele sem levar em conta as letras estão em maiúsculas ou minúsculas.
Pesquise usando a expressão regular
Se usada corretamente, a expressão regular é um recurso muito eficaz no grep. Com o comando Grep, você pode definir uma expressão regular com uma palavra-chave inicial e final. Ao fazer isso, você não precisará digitar toda a linha com o comando grep. A seguinte sintaxe pode ser usada para este propósito.
$ grep “palavra-chave inicial.* finalizando a palavra-chave ”nome do arquivoPor exemplo, para pesquisar uma linha em um arquivo chamado testfile1 que começa com a string “this” e termina com a string “data”, usamos o seguinte comando:
$ grep “isto.* dados ”testfile1
Irá imprimir toda a linha do testfile1 contendo a expressão (palavra-chave inicial “this” e palavra-chave final “dados”).
Imprime um determinado número de linhas após / antes da string de pesquisa
Você também pode exibir o número específico de linhas em um arquivo antes / depois de uma correspondência de string junto com a própria string correspondida. A seguinte sintaxe pode ser usada para este propósito:
$ grep -AIrá mostrar um número N de linhas depois que a string for correspondida no arquivo especificado, incluindo a string correspondida.
Por exemplo, este é o nosso arquivo de amostra chamado testfile2.
O comando a seguir irá gerar a linha correspondente contendo a string “empregado”, Junto com as 2 linhas depois dele.
$ grep -A 2 -i “funcionário” testfile2
Da mesma forma, para exibir o número N de linhas antes da string correspondente em um arquivo específico, use a seguinte sintaxe:
$ grep -BPara exibir o número N de linhas ao redor da string em um arquivo específico, use a seguinte sintaxe:
$ grep -CDestacando a busca
Grep por padrão imprime as linhas correspondentes, mas não mostra qual parte da linha corresponde. Se você usar a opção -color com grep, ele irá mostrar onde as strings de usinagem aparecem em seu arquivo. Grep por padrão usa a cor vermelha para realçar.
A seguinte sintaxe pode ser usada para este propósito:
$ grep “string” nome do arquivo --color
Contando o número de partidas
Se você quiser contar quantas vezes uma determinada palavra aparece em um arquivo específico, você pode usar o grep com a opção -c. Ele retorna apenas o número de correspondências em vez das correspondências em si. A seguinte sintaxe pode ser usada para este propósito:
$ grep -c “string” nome do arquivoEste é o nosso arquivo de amostra semelhante a:
A seguir está um exemplo de um comando que retornou o número de vezes que a palavra Arquivo apareceu em um arquivo chamado testfile3.
Pesquisa invertida
Às vezes, você deseja realizar uma pesquisa reversa que exibe todas as linhas, exceto as que correspondem à entrada. Para fazer isso, basta usar o sinalizador -v seguido de grep:
$ grep -v “string” nome do arquivoPor exemplo, para exibir todas as linhas em um arquivo testfile3 que não contêm a palavra “conta” neles, usamos o seguinte comando:
$ grep -v “account” testfile3
Usando Grep com outros comandos
Grep também pode ser usado para filtrar o resultado necessário de diferentes saídas de comandos. Por exemplo, do “lista instalada do apt ” saída do comando, você deseja encontrar apenas os pacotes que foram instalados automaticamente, você pode filtrar o resultado usando grep da seguinte forma:
$ apt - lista instalada | grep automático
Da mesma forma, lscpu fornece informações detalhadas sobre a CPU. Se você está interessado apenas nas informações sobre a arquitetura da CPU, pode filtrá-las usando o seguinte comando:
$ lscpu | Arquitetura grep
Neste artigo, descrevemos alguns exemplos que o ajudarão a entender os comandos grep e seu uso em diferentes condições. Ter um controle forte sobre o comando grep pode economizar muito tempo se você precisar olhar grandes arquivos de configuração ou log e folhear informações úteis através deles.