Como usar o comando grep no Linux ou Apple macOS / OS X? Como posso usar o comando grep em sistemas operacionais Unix? Você pode me dar um exemplo simples do comando grep?

O que é o comando grep

Grep é um comando essencial do Linux e Unix. É usado para pesquisar texto e strings em um determinado arquivo.

Em outras palavras, o comando grep pesquisa o arquivo fornecido em busca de linhas que contenham uma correspondência com as strings ou palavras fornecidas. É um dos comandos mais úteis em sistemas Linux e Unix para desenvolvedores e administradores de sistemas.

Vamos ver como usar o grep em um sistema Linux ou Unix. Os exemplos podem ser usados em distribuições Linux Ubuntu, Mint, Debian, Arch Linux, CentOs e outras.

Você sabia?

O nome, “grep”, deriva do comando usado para realizar uma operação semelhante, usando o editor de texto Unix / Linux ed:

g / re / p

Os utilitários grep são uma família que inclui grep, egrep e fgrep para tarefas de pesquisa.

Para a maioria dos usos, você precisa usar fgrep, pois é o mais rápido e só olha strings e palavras. No entanto, digitar grep é fácil. Portanto, é uma escolha pessoal.

Exemplos do comando grep em Linux, Unix e MacOS

Abaixo estão alguns comandos padrões do grep, explicados com exemplos para você começar a usar grep no Linux, macOS e Unix:

  • Pesquisar no Linux qualquer linha de um arquivo que contenha a “palavra”:
grep 'palavra' nome-do-arquivo

Por exemplo, procurar a palavra error no arquivo de log de um programa:

grep "error" storage/logs/laravel-2021-09-18.log

## resultado 
[2021-09-18 01:01:16] production.ERROR: GuzzleHttp\Exception\ClientException: Client error: `GET https://mazer.dev/api/ws` resulted in a `400 Bad Request` response:
  • Fazer uma pesquisa sem distinção entre maiúsculas e minúsculas - case insensitive, adicione a opção -i ao comando.

Por exemplo pesquisar pela palavra “bar” no Linux e Unix:

grep -i 'bar' nome-do-arquivo

Os retornos serão todas as linhas com: bar, Bar, BAr, BAR, bAr, etc.

  • Procurar por todos os arquivos no diretório atual e em todos os seus subdiretórios no Linux pela palavra “httpd”:
grep -R 'httpd' .

O ponto ( . ) indica o arquivo atual em Linux. A opção -R informa ao comando grep que deve fazer a pesquisa recursivamente nos subdiretórios.

  • Pesquisar e mostrar o número total de vezes (contagem) que a string sagrada aparece em um arquivo denominado frontpage.md. Para isso use a opção -c:
grep -c 'sagrada' frontpage.md

Estes foram exemplos rápidos do comando grep.

Syntaxe dos comandos grep

As sintaxes básicas para cada comando da raiz grep são:

grep 'text-to-search' filename
fgrep 'text-to-search' filename
grep 'text-to-search' file1 file2 file3
grep 'string1 string2'  filename
cat otherfile | grep 'text-to-search' 
command | grep 'text-to-search' 
command option1 | grep 'data'
grep --color 'data' fileName
grep [-options] pattern filename
fgrep [-options] words file

Como você pode perceber, ao utilizar o comando cat no arquivo desejado e direcionar sua saída com pipe para o grep, não é necessário informar o nome do arquivo no grep onde deseja pesquisar pelo texto.

O mesmo comportamento funcionará para outros comandos que direcionem sua saída para o comando grep.

Como eu uso grep para procurar um arquivo em Linux?

Vamos procurar pelo arquivo /etc/passwd para o usuário mazer, digite:

grep boo /etc/passwd

Exemplo de uma possível saída para o comando digitado acima:

foo:x:1000:1000:boo,,,:/home/mazer:/bin/zsh

Podemos usar fgrep/grep para encontrar todas as linhas de um arquivo que contenham uma palavra específica. Por exemplo, para listar todas as linhas de um arquivo chamado locations.txt no diretório atual que contém a palavra “Lago”, execute:

fgrep Lago locations.txt

Observe que o comando acima também retorna linhas em que “Lago” faz parte de outras palavras, como “Lagoa” ou “Alagoas”.

Se deseja que o retorno seja apenas para a palavra exata da pesquisa, passe a opção -w para o comando grep/fgrep. Desta maneira apenas as linhas com a palavra “Lago” inteira serão retornadas:

fgrep -w Lago locations.txt

Você pode orientar que grep/fgrep ignore a palavra sensível a maiúsculas e minúsculas, para que resultados como LAGO, lago, LagO, sejam retornados para pesquisas por “Lago”. Para isso use a opção -i. No exemplo a seguir estamos passando -i e w juntos:

grep -iw "Lago" locations.txt

Por fim, podemos usar o comando grep na saída do comando cat usando um pipeline:

cat locations.txt | grep -iw "Lago"

Artigos de referência: