O que é o Grep
O Grep, abreviação de “global regular expression print”, é um comando usado para pesquisar e corresponder 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 analisar 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 pesquisar 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 pesquisar 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 pesquisou e correspondeu à 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
Colorizar resultados do Grep usando a opção –color
Se estiver trabalhando em um sistema que não exibe a cadeia de busca 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
Procurando por uma cadeia de forma recursiva em todos os diretórios
Se deseja procurar por uma cadeia em seu diretório atual e em todos os subdiretórios, pesquise usando a flag -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 procurar a string em minúsculas.
$ grep "linux" file name
Nada na saída, certo? Isso ocorre porque o comando grep não conseguiu encontrar e combinar a string “linux” desde que a primeira letra esteja em minúsculas. Para ignorar a sensibilidade a maiúsculas e minúsculas, use a opção -i
e execute o comando abaixo
$ grep -i "linux" welcome.txt
Saída Incrível, não é? O
- i
é normalmente usado para exibir strings independentemente de sua 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
Saída
Usando Grep para inverter a Saída
Para inverter a saída do Grep, use a opção -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, ou seja, em vez de imprimir as 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.
Numerar as linhas que contêm o padrão de pesquisa com a opção -n
Para numerar as linhas onde o padrão de string é correspondido, use a opção -n
conforme mostrado
$ grep -n "Linux" welcome.txt
Output
Pesquise pela palavra correspondente exata usando a opção -w
Ao passar a bandeira -w
, a pesquisa será feita na linha que contém a palavra correspondente exata, conforme mostrado
$ grep -w "opensource" welcome.txt
Resultado No entanto, se você tentar
$ grep -w "open" welcome.txt
NO results serão retornados porque não estamos procurando por um padrão, mas por uma palavra exata!
Usando pipes com o grep
O comando grep pode ser usado 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 em seu sistema, encaminhe o comando dpkg -l
para o grep, como mostrado
$ dpkg -L | grep -i "openssh"
Resultado
Exibindo número de linhas antes ou depois de um padrão de busca usando pipes
Você pode usar a opção -A ou -B para exibir o número de linhas que precedem ou seguem a string de busca. A opção -A denota as linhas que vêm após a string de busca e -B imprime a saída que aparece antes da string de busca. 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 exibirá a linha que contém a string de busca mais 3 linhas de texto antes da string ether no comando
ifconfig
. Saída
$ ifconfig | grep -B 4 ether
Usando 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
Output Para exibir linhas que terminam com a letra ‘x’, execute
$ grep x$ welcome.txt
Output
Obtendo ajuda com mais opções do Grep
Se precisar 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
Saída de Amostra Agradecemos o seu tempo por passar por 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