O comando grep do Linux é usado como um método para filtragem de entrada. GREP significa Global Regular Expression Printer e, portanto, para usá-lo efetivamente, você deve ter algum conhecimento sobre expressões regulares.
Neste artigo, você aprenderá vários exemplos que ajudarão você a entender o comando grep.
01 de 09Como procurar por uma seqüência de caracteres em um arquivo usando o GREP

Imagine que você tenha um arquivo de texto chamado livros com os seguintes títulos de livros infantis:
- Robin Hood
- Chapeuzinho Vermelho
- Peter Pan
- Cachinhos Dourados E Os Três Ursos
- Branca de Neve e os Sete Anões
- Pinnochio
- O gato no chapéu
- Os três Porquinhos
- O gruffalo
- Charlie e a fabrica de chocolate
Para encontrar todos os livros com a palavra "O" no título, use a seguinte sintaxe:
grep Os livrosOs seguintes resultados serão retornados:
- Cachinhos Dourados E Os Três Ursos
- Branca de Neve e os Sete Anões
- O gato no chapéu
- Os três Porquinhos
- O gruffalo
- Charlie e a fabrica de chocolate
Em cada caso, a palavra "The" será destacada.
A pesquisa faz distinção entre maiúsculas e minúsculas, portanto, se um dos títulos tiver "o" em vez de "O", ele não teria sido retornado.
Para ignorar o caso, você pode adicionar a seguinte opção:
grep os livros --ignore-caseVocê também pode usar a opção -i da seguinte maneira:
Continue lendo abaixo
02 de 09Pesquisar por uma seqüência de caracteres em um arquivo usando curingas
O comando grep é muito poderoso. Você pode usar várias técnicas de correspondência de padrões para filtrar os resultados.
Neste exemplo, mostrarei como pesquisar uma string em um arquivo usando curingas.
Imagine que você tenha um arquivo chamado places com os seguintes nomes de local escocês:
aberdeenaberystwythaberlourinvertebradoinvernessNewburghveado novoGalloway novoGlasgowEdimburgoSe você quiser encontrar todos os lugares com inver no nome use a seguinte sintaxe:
grep inverter * lugaresO curinga asterisco (*) significa 0 ou muitos. Portanto, se você tiver um lugar chamado inver ou um lugar chamado Inverness, ambos serão retornados.
Outro curinga que você pode usar é o ponto (.). Você pode usar isso para corresponder a uma única letra.
grep inver.O comando acima encontraria lugares chamados inverurie e inverary mas não encontraria inverseerie porque só pode haver um wildcard entre os dois rs como denotado pelo único período.
O curinga de período é útil, mas pode causar problemas se você tiver um como parte do texto que está pesquisando.
Por exemplo, olhe para esta lista de nomes de domínio
- linux.about.com
- pcsupport.about.com
- mp3.about.com
- minecraft.about.com
- androidgames.about.com
- netforbeginners.about.com
- everydaylinuxuser.com
- google.co.uk
- google.au
- direct.gov.uk
Para encontrar todas as informações sobre .coms, basta pesquisar usando a seguinte sintaxe:
grep * sobre * domainnamesO comando acima cairia se a lista contivesse o seguinte nome:
- everydaylinuxuser.com/about.html
Você poderia, portanto, tentar a seguinte sintaxe:
grep * about.com domainnamesIsso funcionaria bem, a menos que houvesse um domínio com o seguinte nome:
aboutycom.comPara realmente procurar o termo about.com, você precisaria escapar do ponto da seguinte forma:
grep * about .com nomes de domínioO curinga final para mostrar a você é o ponto de interrogação que significa zero ou um caractere.
Por exemplo:
grep? ber placenamesO comando acima retornaria aberdeen, aberystwyth ou até berwick.
Continue lendo abaixo
03 de 09Pesquisar por seqüências de caracteres no início e final da linha usando grep
O símbolo de quilate (^) e de dólar ($) permite pesquisar padrões no início e no final das linhas.
Imagine que você tenha um arquivo chamado futebol com os seguintes nomes de equipe:
- Blackpool
- Liverpool
- Cidade de Manchester
- Leicester City
- Manchester United
- Newcastle United
- FC United de Manchester
Se você quiser encontrar todas as equipes que começaram com Manchester, use a seguinte sintaxe:
grep ^ equipes de ManchesterO comando acima retornaria o Manchester City e o Manchester United, mas não o FC United of Manchester.
Como alternativa, você pode encontrar todas as equipes que terminam com o United usando a seguinte sintaxe:
grep United $ teamsO comando acima retornaria ao Manchester United e Newcastle United, mas não ao FC United of Manchester.
04 de 09Contando o número de partidas usando o grep
Se você não quiser retornar as linhas reais que correspondem a um padrão usando o grep, mas você só quer saber quantas você pode usar a seguinte sintaxe:
grep -c inputfile padrãoSe o padrão fosse correspondido duas vezes, o número 2 seria retornado.
Continue lendo abaixo
05 de 09Encontrando todos os termos que não combinam usando o grep
Imagine que você tenha uma lista de nomes de lugares com os países listados da seguinte maneira:
- aberdeen Scotland
- glasgow Scotland
- liverpool Inglaterra
- Baía de colwyn
- Londres, Inglaterra
Você deve ter notado que o colwyn bay não possui nenhum país associado a ele.
Para pesquisar todos os lugares com um país, você pode usar a seguinte sintaxe:
grep land $ lugaresOs retornos dos resultados seriam todos os lugares, exceto o colwyn bay.
Isso obviamente funciona apenas para lugares que terminam em terra (dificilmente científicos).
Você pode inverter a seleção usando a seguinte sintaxe:
grep -v land $ lugaresIsso encontraria todos os lugares que não terminassem com a terra.
06 de 09Como encontrar linhas vazias em arquivos usando o grep
Imagine que você tenha um arquivo de entrada usado por um aplicativo de terceiros que pára de ler o arquivo quando encontra uma linha vazia da seguinte maneira:
- aberdeen escócia
- Escócia do inverness
- liverpool inglaterra
- colwyn bay wales
Quando o aplicativo chegar à linha após o liverpool, ele parará de ler, o que significa que a Baía de colwyn está totalmente perdida.
Você pode usar o grep para procurar linhas em branco com a seguinte sintaxe:
grep ^ $ placesInfelizmente isso não é particularmente útil porque apenas retorna as linhas em branco.
É claro que você pode obter uma contagem do número de linhas em branco como uma verificação para ver se o arquivo é válido da seguinte forma:
grep -c ^ $ placesNo entanto, seria mais útil saber os números de linha que possuem uma linha em branco para que você possa substituí-los. Você pode fazer isso com o seguinte comando:
grep -n ^ $ placesContinue lendo abaixo
07 de 09Como procurar por seqüências de caracteres maiúsculos ou minúsculos usando grep
Usando o grep, você pode determinar quais linhas em um arquivo têm caracteres maiúsculos usando a seguinte sintaxe:
grep 'A-Z' nome do arquivoOs colchetes permitem determinar o intervalo de caracteres. No exemplo acima, ele corresponde a qualquer caractere que esteja entre A e Z.
Portanto, para corresponder aos caracteres minúsculos, você pode usar a seguinte sintaxe:
grep 'a-z' nome do arquivoSe você quiser corresponder apenas letras e não números ou outros símbolos, use a seguinte sintaxe:
grep 'a-zA-Z' nome do arquivoVocê pode fazer o mesmo com números da seguinte maneira:
grep '0-9' nome do arquivo 08 de 09Procurando por padrões repetidos usando o grep
Você pode usar chaves {} para procurar um padrão de repetição.
Imagine que você tenha um arquivo com números de telefone da seguinte maneira:
- 055-1234
- 055-4567
- 555-1545
- 444-0167
- 444-0854
- 4549-2234
- x44-1234
Você sabe que a primeira parte do número precisa ter três dígitos e você deseja encontrar as linhas que não correspondem a esse padrão.
Do exemplo anterior, você sabe que 0-9 retorna todos os números em um arquivo.
Neste exemplo, queremos as linhas que começam com três números seguidos por um hífen (-). Você pode fazer isso com a seguinte sintaxe:
grep "^ 0-9 0-9 0-9 -" númerosComo sabemos de exemplos anteriores, o quilate (^) significa que a linha deve começar com o seguinte padrão.
O 0-9 irá procurar por qualquer número entre 0 e 9. Como isso é incluído três vezes, ele corresponde a 3 números. Finalmente, há um hífen para indicar que um hífen deve ter sucesso nos três números.
Usando as chaves, você pode diminuir a pesquisa da seguinte maneira:
grep "^ 0-9 {3 } -" númerosA barra escapa do {colchete para que ele funcione como parte da expressão regular, mas em essência o que isso está dizendo é 0-9 {3}, o que significa qualquer número entre 0 e 9 três vezes.
As chaves também podem ser usadas da seguinte maneira:
{5,10}{5,}O {5,10} significa que o personagem que está sendo procurado deve ser repetido pelo menos 5 vezes, mas não mais que 10, enquanto o {5} significa que o personagem deve ser repetido pelo menos 5 vezes, mas pode ser mais do que isso.
Continue lendo abaixo
09 de 09Usando a saída de outros comandos usando o grep
Até agora, examinamos a correspondência de padrões em arquivos individuais, mas o grep pode usar a saída de outros comandos como a entrada para correspondência de padrões.
Um ótimo exemplo disso é usar o comando ps, que lista os processos ativos.
Por exemplo, execute o seguinte comando:
ps -efTodos os processos em execução no seu sistema serão exibidos.
Você pode usar o grep para procurar um processo em execução específico da seguinte maneira:
ps -ef | grep firefoxResumo
O comando grep é um comando fundamental do Linux e vale muito a pena aprender, pois facilitará muito a sua vida ao procurar arquivos e processos ao usar o terminal.




