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