O comando egrep pertence à família do comando grep que é usado para busca de padrões no Linux. Se você usou o comando grep, o egrep funciona da mesma forma que o grep -E (grep Extended regex’). O egrep escaneia um arquivo específico, linha a linha, e imprime a(s) linha(s) que contém(m) a string de busca/expressão regular. Neste artigo, vamos explicar 15 exemplos úteis dos comandos egrep que ajudarão os novatos e até mesmo especialistas a realizar buscas significativas no LinuxExecutamos estes exemplos em um sistema Debian 10 Buster mas eles podem ser facilmente replicados na maioria das distros Linux.
- Exemplo 1: Buscando por uma string específica em um arquivo
- Exemplo 2: Procurando por uma string específica em múltiplos arquivos
- Exemplo 3: Procurando novamente a string em todo o diretório
- Exemplo 4: Realizando uma busca sem distinção entre maiúsculas e minúsculas
- Exemplo 5: Procurando por uma string como uma palavra completa e não como uma sub-cordem
- Exemplo 6: Imprimindo apenas os nomes dos arquivos que contêm a string
- Exemplo 7: Imprimir apenas a string de pesquisa de um ficheiro
- Exemplo 8: Exibindo n número de linhas antes, depois ou ao redor da string de busca
- Exemplo 9: Combinando expressões regulares em arquivos
- Exemplo 10: Realçando a string de pesquisa
- Exemplo 11: Executando a pesquisa Inverter em um arquivo
- Exemplo 12: Executando a busca invertida baseada em múltiplos critérios/padrão de busca
- Exemplo 13: Imprimindo o número de linhas que combinam com a string de pesquisa
- Exemplo 14: Exibindo o número da linha onde a string é correspondida
- Exemplo 15: Exibindo a posição no arquivo onde a string de busca corresponde
Exemplo 1: Buscando por uma string específica em um arquivo
Este é o uso mais comum do comando egrep. O que você faz é especificar uma string que você quer procurar, e o nome do arquivo em que você quer procurar por essa string. O resultado então exibe a linha inteira contendo a string pesquisada.
Syntax:
Exemplo:
Neste exemplo, eu procurei pela palavra “debian” no arquivo de texto especificado. Você pode ver como os resultados mostram a linha inteira que contém a palavra “debian”:
Exemplo 2: Procurando por uma string específica em múltiplos arquivos
Com o comando egrep, você pode procurar por uma string entre múltiplos arquivos residentes no mesmo diretório. Você só tem que ser um pouco mais específico ao fornecer um “padrão” para os arquivos pesquisados. Isso ficará mais claro com o exemplo que vamos apresentar.
Sintax:
Exemplo:
Aqui, vamos procurar pela palavra “debian” em todos os arquivos .txt especificando o padrão do nome do arquivo da seguinte forma:
O comando imprimiu todas as linhas, juntamente com os nomes dos arquivos que contêm a palavra “debian” de todos os arquivos .txt no diretório atual.
Exemplo 3: Procurando novamente a string em todo o diretório
Quando você quiser procurar por uma string em todos os arquivos de um diretório e suas subdiretórios, você pode fazê-lo usando a flag -r com o comando egrep.
Syntax:
Exemplo:
Neste exemplo, estou procurando pela palavra “sample” nos arquivos de todo o diretório atual(Downloads).
Os resultados contêm todas as linhas, juntamente com os nomes dos arquivos, que contêm a palavra “sample” de todos os arquivos do diretório Downloads, e seus subdiretórios.
Exemplo 4: Realizando uma busca sem distinção entre maiúsculas e minúsculas
Com a bandeira -i, você pode usar o comando egrep para imprimir os resultados baseados em uma string de busca sem ter que se preocupar com o seu caso.
Sintax:
Exemplo:
Aqui, estou procurando pela palavra “debian” e quero que os resultados mostrem todas as linhas do arquivo que contém a palavra “debian” ou “Debian”, independente do caso.
>
Você pode ver como a bandeira -i me ajudou a buscar todas as linhas que contêm a string de busca através de uma busca “insensível” a maiúsculas e minúsculas.
Exemplo 5: Procurando por uma string como uma palavra completa e não como uma sub-cordem
Quando você normalmente procura por uma string através do egrep, ele imprime todas as palavras que contêm a string como uma sub-cordem. Por exemplo, procurando a string “on” imprimirá todas as palavras que contêm a string “on” como ” on”, “only”, “monitor”, “clone”, etc. Se você quiser que os resultados mostrem apenas a palavra “on” como uma palavra completa e não como uma sub-cordem, você pode usar a bandeira -w com egrep.
Sintax:
Exemplo:
Aqui estou procurando pela string “on” em um arquivo de amostra:
Você pode ver na saída acima, que ela contém a palavra “somente” também. Contudo, isto não é o que eu quero, pois estou procurando exclusivamente a palavra “on”. Então, este é o comando que vou usar em vez disso:
Agora os meus resultados de pesquisa incluem apenas as linhas que contêm a palavra “on” como uma palavra inteira.
Exemplo 6: Imprimindo apenas os nomes dos arquivos que contêm a string
Por vezes só queremos ir buscar os nomes dos arquivos que contêm uma string específica, em vez de imprimir as linhas que a contêm. Isto pode ser feito usando o sinalizador -l (L minúsculo) com o comando egrep.
Syntax:
Exemplo:
Aqui estou procurando pela string “sample” em todos os arquivos .txt no diretório atual:
Os resultados da pesquisa apenas imprimem o nome dos ficheiros que contêm a string especificada.
Exemplo 7: Imprimir apenas a string de pesquisa de um ficheiro
Em vez de imprimir toda a linha que contém a string de pesquisa, pode usar o comando egrep para imprimir a string em si. A string será impressa o número de vezes que aparece no ficheiro especificado.
Syntax:
Exemplo:
Neste exemplo, estou a procurar a palavra “This” no meu ficheiro.
Note: Este uso do comando vem a calhar quando se procura por uma string baseada num padrão de expressão regular. Vamos explicar as expressões regulares em detalhes em um dos próximos exemplos.
Exemplo 8: Exibindo n número de linhas antes, depois ou ao redor da string de busca
Por vezes é muito importante conhecer o contexto em um arquivo onde uma string específica é usada. O egrep é útil no sentido em que pode ser usado para exibir a linha contendo a string de busca e também um número específico de linhas antes, depois e ao redor dela.
Este é o ficheiro de texto de exemplo que vou utilizar para explicar os exemplos que se seguem:
N número de linhas Após a cadeia de caracteres de pesquisa:
Utilizando a bandeira A da seguinte maneira exibirá a linha contendo a string de busca e N número de linhas após ela:
Exemplo:
N número de linhas Antes da string de pesquisa:
Utilizando a bandeira B da seguinte maneira irá exibir a linha contendo a string de pesquisa e N número de linhas antes dela:
Exemplo:
N número de linhas Antes da cadeia de busca:
Usando a bandeira C da seguinte maneira, será exibida a linha contendo a cadeia de busca, e N número de linhas antes e depois dela:
Exemplo:
Exemplo 9: Combinando expressões regulares em arquivos
O comando egrep se torna mais poderoso à medida que você procura por expressões regulares ao invés de cadeias de caracteres sólidas de busca em um arquivo.
Sintaxe:
Deixe-nos explicar como você pode usar Expressões Regulares em sua busca egrep:
Operador de repetição | Uso |
? | O item anterior antes de ? é opcional e é igualado no máximo uma vez |
* | O item precedente antes de * será igualado zero ou mais vezes |
+ | O item anterior antes de + será igualado uma ou mais vezes |
{n} | O item anterior é exactamente igualado n número de vezes. |
{n,} | O item anterior é igualado n ou mais vezes |
{,m} | O item anterior é igualado no máximo m vezes |
{n,m} | O item anterior é igualado pelo menos n vezes mas não mais que m vezes |
Exemplo:
No exemplo seguinte, as linhas contendo a seguinte expressão são combinadas:
>
Arrancar com “Gnome” e terminar em ” programas”
Exemplo 10: Realçando a string de pesquisa
Quando você define a variável de ambiente GREP_OPTIONS como abaixo, você obtém sua saída com a string/padrão de pesquisa realçada nos resultados:
Você pode então pesquisar a string de qualquer maneira que descrevemos nos exemplos deste artigo.
Exemplo 11: Executando a pesquisa Inverter em um arquivo
Por pesquisa invertida, queremos dizer que o comando egrep imprime tudo no arquivo, exceto as linhas que contêm a string de pesquisa. Vamos utilizar o seguinte ficheiro de amostra para explicar a pesquisa invertida através do egrep. Nós imprimimos o conteúdo do arquivo usando o comando cat:
Syntax:
Exemplo:
Do arquivo de amostra que mencionamos, queremos omitir a linha contendo a palavra “two” na saída, portanto usaremos o seguinte comando:
Você pode ver como a saída contém tudo do arquivo de amostra, exceto a segunda linha que continha a string de busca “two”.
Exemplo 12: Executando a busca invertida baseada em múltiplos critérios/padrão de busca
Com a flag -v, você também pode fazer o comando egrep para executar uma busca invertida baseada em mais de uma string/padrão de busca.
Estaremos usando o mesmo arquivo de amostra que mencionamos no exemplo 11 para explicar este cenário.
Sintaxe:
…. filename
Exemplo:
Do arquivo de amostra que mencionamos, queremos omitir a(s) linha(s) contendo as palavras “one” e “two” na saída, portanto vamos usar o seguinte comando:
Fornecemos duas palavras para omitir usando a bandeira -e, portanto a saída aparecerá da seguinte forma:
Exemplo 13: Imprimindo o número de linhas que combinam com a string de pesquisa
Em vez de imprimir a string pesquisada a partir do arquivo ou das linhas que a contêm, você pode usar o comando egrep para contar e imprimir o número de linhas que combinam com a string. Esta contagem pode ser obtida usando a bandeira -c com o comando egrep.
Syntax:
Exemplo:
Neste exemplo, usaremos o flag -c para contar o número de linhas que contêm a palavra “This” no nosso arquivo de exemplo:
Você também pode usar o recurso de busca invertida aqui para contar e imprimir o número de linhas que não contêm a string de busca:
Exemplo 14: Exibindo o número da linha onde a string é correspondida
Com a bandeira -n, você pode fazer o comando egrep para imprimir a linha correspondente juntamente com o número da linha que contém a string de pesquisa.
Sintaxe:
Exemplo:
Você pode ver como os números de linha são exibidos contra os resultados da busca.
Exemplo 15: Exibindo a posição no arquivo onde a string de busca corresponde
Se você quiser saber a posição no arquivo onde a string de busca existe, você pode usar a bandeira -b com o comando egrep.
Exemplo:
Os resultados da busca imprimem o byte offset do arquivo onde a palavra busca existe. Usando uma combinação das bandeiras explicadas neste artigo, você pode realizar buscas mais significativas e complexas em seus arquivos.