Você já usou grep antes? Na maioria das vezes, o truque básico do grep pode fazer a maior parte do trabalho. No entanto, o grep oferece várias maneiras de realizar a pesquisa e ajustar a saída para uma versão mais utilizável. Neste artigo, vamos verificar o uso do comando grep.
Uso Grep
Verificando existência
Se você está executando qualquer tipo de distribuição Linux, então você já tem o grep instalado. Execute o seguinte comando no terminal.
grep --version
Este comando é usado para mostrar a versão do grep atualmente instalado. Agora, precisamos de um arquivo de demonstração. No meu caso, estarei gerando um arquivo de texto que inclui todos os pacotes instalados em meu sistema.
Fundamentos
O uso básico do grep segue a seguinte estrutura.
grepOu, para facilitar a compreensão, use este.
grepNeste caso, grep irá realizar uma pesquisa no arquivo e imprimir todas as linhas que incluem o padrão (termo de pesquisa).
grep python ~ / Desktop / PackageList.TXT
Grep pesquisou o arquivo “PackageList.txt ”Gerei antes e imprimi todas as linhas que incluem“ python ”.
Esta mesma operação pode ser realizada de outra forma. Veja o seguinte exemplo.
cat ~ / Desktop / PackageList.txt | grep python
Aqui, usando o comando “cat”, enviei o conteúdo do arquivo “PackageList.txt ”para grep. Usando a saída de cat, grep executou a pesquisa e imprimiu as linhas que contêm o termo de pesquisa.
Agora vem uma coisa divertida. Você pode literalmente empilhar vários comandos grep assim.
cat ~ / Desktop / PackageList.txt | grep - | grep p | grep python
O primeiro grep filtra até as linhas com um hífen, o segundo filtra até as linhas com p, e o grep final filtra até as linhas com python. Faz sentido?
Sensibilidade a maiúsculas e minúsculas
Ao realizar uma pesquisa, a diferenciação de maiúsculas e minúsculas é uma questão importante. Por padrão, grep diferencia maiúsculas de minúsculas.
Por exemplo, pesquisar por “Python” não mostrará nenhum resultado.
cat ~ / Desktop / PackageList.txt | grep Python
Para tornar o grep “insensível” a maiúsculas e minúsculas, adicione a seguinte opção.
cat ~ / Desktop / PackageList.txt | grep -i Python
Pesquisa de arquivos
Digamos que você tenha um diretório com vários arquivos de texto. Seu objetivo é identificar os arquivos que contêm ou não um padrão (termo de pesquisa).
Acho este método bastante útil ao pesquisar em uma pilha de arquivos de log. Como não tenho tempo para abrir e verificar todos os arquivos manualmente, tenho o grep para fazer o trabalho para mim.
Para listar arquivos contendo a correspondência, use o sinalizador “-l”.
grep -l
Como o resultado sugere, o termo “python” está presente em todos os 3 arquivos presentes no diretório “Desktop”.
Para listar arquivos sem qualquer correspondência, use a sinalização “-L”.
grep -L
“NoMatch.txt ”é o único arquivo que não contém o termo“ python ”.
Pesquisa invertida
O comportamento padrão do grep é imprimir apenas as linhas com o padrão correspondente, certo? É hora de reverter o processo. Desta vez, imprimiremos apenas as linhas SEM o padrão correspondente.
Basta passar a opção “-v” para o grep.
cat ~ / Desktop / PackageList.txt | grep -i -v Python
Imprimir linhas antes / depois da partida
Por padrão, grep irá imprimir apenas a linha que corresponde ao padrão de pesquisa. Usando esta técnica, você pode dizer ao grep para imprimir as linhas antes / depois da partida também.
Para imprimir linhas antes da partida, use a seguinte estrutura.
grep -B
Aqui, 5 é a linha de número que grep imprimirá ANTES da linha correspondente.
Para imprimir linhas após a partida, use o seguinte.
grep -A
Que tal imprimir antes e depois da linha correspondente? Nesse caso, use a sinalização “-C”.
grep -C
Número da linha
Quando grep mostra a saída, ele não menciona o número da linha. Para o (s) número (s) de linha associado (s), use o sinalizador “-n”.
grep -n
Única palavra
Se o sinalizador “-w” for usado, grep tratará o padrão como uma palavra inteira.
grep -w
Limitando a pesquisa grep
Grep permite especificar o número de linhas a pesquisar no arquivo. Este método é útil se você estiver lidando com um arquivo grande (como o log do sistema). Use a sinalização “-m”.
grep -m
Pesquisa recursiva
É um dos recursos mais úteis que o grep oferece para uso intenso. O Grep pode pesquisar recursivamente em um diretório e encontrar todas as correspondências de todos os arquivos que enfrenta.
grep -ROu,
grep -r
Costumo encontrar o uso dessa função recursiva junto com a sinalização “-l”.
Modo silencioso
Grep pode ser executado no modo "silencioso". Quando executado no modo “silencioso”, grep não imprimirá nenhuma saída para o terminal. Em vez disso, ele retornará 0 (pelo menos, uma correspondência foi encontrada) ou 1 (nenhuma correspondência encontrada).
grep -qecho $?
Regex
Grep também permite pesquisas regex (expressão regular). Isso adiciona um novo nível de complexidade e usabilidade do grep como uma ferramenta de pesquisa.
Por exemplo, você pode usar colchetes para pesquisar "também" e "dois" ao mesmo tempo.
cat ~ / Desktop / gpl-3.0.txt | grep t [wo] o
Este próximo exemplo só irá imprimir a linha se a correspondência ocorrer no início da linha.
grep ^ GNU ~ / Desktop / gpl-3.0.TXT
Quanto a combinar o final, use este.
grep você $ ~ / Desktop / gpl-3.0.TXT
Se você quiser usar Perl regex, use a sinalização “-P”. Ele tratará o padrão como regex Perl.
grep -PPensamentos finais
Grep oferece várias maneiras de personalizar a função de pesquisa. A disponibilidade de regex abre um novo horizonte para o uso potencial de grep. O legal é que você pode usar regex geral e Perl; qualquer coisa com que você se sinta confortável.
Para a explicação mais detalhada, sempre consulte a página do manual.
homem grep
Saúde!