Comando Grep no Linux/UNIX

O que é Grep

O Grep, abreviação de “impressão de expressão regular global”, é um comando usado para buscar e combinar padrões de texto em arquivos contidos nas expressões regulares. Além disso, o comando vem pré-instalado em todas as distribuições Linux. Neste guia, vamos observar os usos mais comuns do comando grep, juntamente com casos de uso populares.

Comando Grep no Linux

O comando grep pode ser usado para encontrar ou buscar uma expressão regular ou uma string em um arquivo de texto. Para demonstrar isso, vamos criar um arquivo de texto welcome.txt e adicionar algum conteúdo conforme mostrado.

Welcome to Linux !
Linux is a free and opensource Operating system that is mostly used by
developers and in production servers for hosting crucial components such as web
and database servers. Linux has also made a name for itself in PCs.
Beginners looking to experiment with Linux can get started with friendlier linux
distributions such as Ubuntu, Mint, Fedora and Elementary OS.

Ótimo! Agora estamos prontos para executar alguns comandos grep e manipular a saída para obter os resultados desejados. Para buscar uma string em um arquivo, execute o comando abaixo Sintaxe

$ grep "string" file name

OU

$ filename grep "string"

Exemplo:

$ grep "Linux" welcome.txt

Resultado Como você pode ver, o grep não apenas buscou e combinou a string “Linux”, mas também imprimiu as linhas em que a string aparece. Se o arquivo estiver localizado em um caminho de arquivo diferente, certifique-se de especificar o caminho do arquivo conforme mostrado abaixo.

$ grep "string" /path/to/file

Colorindo os resultados do Grep usando a opção –color

Se você estiver trabalhando em um sistema que não exibe a cadeia de pesquisa ou padrão em uma cor diferente do restante do texto, use a opção --color para destacar seus resultados. Exemplo

$ grep --color "free and opensource" welcome.txt 

Saída

Pesquisando por uma string recursivamente em todos os diretórios

Se desejar pesquisar por uma string no diretório atual e em todos os subdiretórios, faça a pesquisa usando a opção -r conforme mostrado

$ grep -r "string-name" *

Por exemplo

$ grep -r "linux" *

Saída

Ignorando a sensibilidade a maiúsculas e minúsculas

No exemplo acima, nossos resultados de pesquisa nos deram o que queríamos porque a string “Linux” foi especificada em maiúsculas e também existe no arquivo em maiúsculas. Agora vamos tentar pesquisar a string em minúsculas.

$ grep "linux" file name

Nada da saída, certo? Isso ocorre porque o comando grep não conseguiu encontrar e combinar a string “linux” já que a primeira letra está em minúsculas. Para ignorar a sensibilidade a maiúsculas e minúsculas, use a flag -i e execute o comando abaixo

$ grep -i "linux" welcome.txt

Resultado Legal, não é? O -i é normalmente usado para exibir strings independentemente da sensibilidade a maiúsculas e minúsculas.

Conte as linhas onde as strings são correspondidas com a opção -c

Para contar o número total de linhas onde o padrão de string aparece ou reside, execute o comando abaixo

$ grep -c "Linux" welcome.txt

Resultado

Usando Grep para Inverter a Saída

Para inverter a saída do Grep, use a flag -v. A opção -v instrui o grep a imprimir todas as linhas que não contêm ou correspondem à expressão. A opção -v diz ao grep para inverter sua saída, o que significa que, em vez de imprimir linhas correspondentes, faça o oposto e imprima todas as linhas que não correspondem à expressão. Voltando ao nosso arquivo, vamos exibir os números das linhas conforme mostrado. Pressione ESC no editor Vim, digite dois pontos seguidos por

 set nu

Em seguida, pressione Enter Output Agora, para exibir as linhas que não contêm a string “Linux”, execute

$ grep -v "Linux" welcome.txt

Output Como você pode ver, o grep exibiu as linhas que não contêm o padrão de pesquisa.

Numere as linhas que contêm o padrão de pesquisa com a opção -n

Para numerar as linhas em que o padrão de string é correspondido, use a opção -n conforme mostrado

$ grep -n "Linux" welcome.txt

Output

Procure por uma palavra correspondente exata usando a opção -w

Ao passar a bandeira -w, a busca será pela linha que contém a palavra correspondente exata, como mostrado

$ grep -w "opensource" welcome.txt

Saída No entanto, se você tentar

$ grep -w "open" welcome.txt

nenhum resultado será retornado porque não estamos buscando por um padrão, mas por uma palavra exata!

Usando pipes com grep

O comando grep pode ser utilizado junto com pipes para obter uma saída distinta. Por exemplo, se você quiser saber se um determinado pacote está instalado no sistema Ubuntu, execute

$ dpkg -L | grep "package-name"

Por exemplo, para descobrir se o OpenSSH foi instalado no seu sistema, redirecione o comando dpkg -l para o grep como mostrado

$ dpkg -L | grep -i "openssh"

Saída

Exibindo número de linhas antes ou depois de um padrão de pesquisa Usando pipes

Você pode usar o -A ou o -B para exibir o número de linhas que precedem ou vêm após a string de pesquisa. A opção -A indica as linhas que vêm após a string de pesquisa e o -B imprime a saída que aparece antes da string de pesquisa. Por exemplo

$ ifconfig | grep -A 4 ens3

Este comando exibe a linha que contém a string mais 4 linhas de texto após a string ens no comando ifconfig. Saída Por outro lado, no exemplo abaixo, o uso da opção -B irá exibir a linha que contém a string de pesquisa mais 3 linhas de texto antes da string ether no comando ifconfig. Saída

$ ifconfig | grep -B 4 ether

Usando o grep com REGEX – expressões regulares

O termo REGEX é um acrônimo para REGular EXpression. Um REGEX é uma sequência de caracteres que é usada para corresponder a um padrão. Abaixo estão alguns exemplos:

^      Matches characters at the beginning of a line
$      Matches characters at the end of a line
"."    Matches any character
[a-z]  Matches any characters between A and Z
[^ ..] Matches anything apart from what is contained in the brackets

Exemplo Para imprimir linhas que começam com um determinado caractere, a sintaxe é;

grep ^character file_name

Por exemplo, para exibir as linhas que começam com a letra “d” no nosso arquivo welcome.txt, executaríamos

$ grep ^d welcome.txt 

Resultado Para exibir linhas que terminam com a letra ‘x’, execute

$ grep x$ welcome.txt

Resultado

Obtendo ajuda com mais opções do Grep

Se você precisa aprender mais sobre o uso do comando Grep, execute o comando abaixo para obter uma prévia das outras bandeiras ou opções que você pode usar junto com o comando.

$ grep --help

Exemplo de Saída Agradecemos pelo tempo que dedicou a este tutorial. Sinta-se à vontade para experimentar os comandos e nos informar como foi.

Source:
https://www.digitalocean.com/community/tutorials/grep-command-in-linux-unix