Neste guia, daremos uma rápida olhada em algumas das implementações mais comuns do grep comando.
O grep estrutura de comando
Qualquer comando Grep terá os seguintes componentes.
$ grep
Comum grep Sintaxe
Procurando uma string em um arquivo
Esta é a maneira mais simples de usar o grep comando. No exemplo seguinte, grep procurará o termo "dkms" (sem cotações) no arquivo Apt-Packages-Installed.TXT (contendo todos os pacotes APT instalados no sistema).
$ grep "dkms" apt-packages-ingled.TXT
É recomendável usar citações duplas ("") para indicar uma string porque uma string pode conter caracteres especiais e espaços em branco.
Procurando uma string em vários arquivos
O grep O comando também pode executar as pesquisas em vários arquivos. Tudo o que você precisa fazer é especificar os arquivos sequencialmente.
$ grep "dkms" apt-packages-insalled-1.txt apt-packages-Installed-2.TXT
Em vez de especificar manualmente os arquivos, você também pode usar a expressão curinga (*).
$ grep "dkms" apt-packages-insalted-*.TXT
E se quiséssemos realizar a pesquisa em todos os arquivos no diretório atual? Basta definir a expressão do curinga para indicar todos os arquivos no diretório atual.
$ grep "dkms" *
Como podemos ver, grep Encontrei todas as correspondências nos arquivos de texto, mas não lidou bem com os diretórios. Isso leva perfeitamente ao próximo ponto.
Pesquisando subdiretos
Por padrão, grep Não procure os subdiretos por partidas. Se você deseja que Grep faça isso, precisa dizer isso adicionando a bandeira “-r.”
Tente realizar a pesquisa anterior mais uma vez com este novo truque.
$ grep -r "dkms" *
Observe que dadas as camadas de subdiretos e o número de arquivos para analisar, grep pode levar algum tempo. Na tela, parece que está congelado. Então, não entre em pânico se você enfrentar situações semelhantes.
Verificando o número da linha da partida
Tendo o número da linha do grep a partida pode ser uma dádiva de Deus. Para ver o número da linha da partida, use a bandeira “-n.”
$ grep -n "dkms" *.TXT
Contando o número de correspondências
O grep O comando pode contar o número de correspondências no resultado da pesquisa. Para fazer isso, use a bandeira “-l.”
$ grep -c "dkms" *.TXT
Aqui, grep mostrará o número de correspondências para cada arquivo pesquisado.
Imprimir nome de arquivos correspondentes
Às vezes, você quer saber quais arquivos correspondiam ao padrão especificado sem o resultado da pesquisa. Se for esse o caso, use a bandeira “-l.”
$ grep -l "dkms" *.TXT
Imprimir linhas antes e depois da corda correspondente
Por padrão, grep Imprimirá a linha que encontra a string especificada. No entanto, podemos calibrar a saída para imprimir algumas linhas antes e/ou depois da correspondência da string.
Grep imprimirá a corda correspondente junto com 5 linhas anteriores no console no comando a seguir, graças à bandeira "-b".
$ grep -b 5 "dkms" apt-packages-insalled-1.TXT
Da mesma forma, também podemos dizer a Grep para imprimir várias linhas depois de encontrar a string correspondente. Para fazer isso, usaremos a bandeira “-A.”No exemplo seguinte, grep Imprimirá 5 linhas depois de encontrar a partida.
$ grep -a 5 "dkms" apt-packages-insalled-1.TXT
Agora, é hora de combinar esses dois recursos.
$ grep -a 5 -b 5 "dkms" apt-packages-insalled-1.TXT
O comando se torna desnecessariamente confuso dessa maneira. Podemos dizer a Grep para imprimir vários antes e depois que a partida é encontrada para resolver isso. Para fazer isso, usaremos a bandeira “-C.”
$ grep -c 5 "dkms" apt-packages-insalled-1.TXT
Observe que a saída será simétrica em torno da string correspondente se você estiver usando o sinalizador "-C". Se você deseja um número assimétrico de linhas, precisa descrevê-las separadamente usando as bandeiras “-a” e “-b”.
Limitando grep saída
Se você está trabalhando com um grande arquivo de texto que contém muitas instâncias do padrão de pesquisa, então o grep A saída imprimirá um grande pedaço de saída com muita bagunça. Por exemplo,
$ grep "instalado" apt-packages-insalled-1.TXT
Podemos dizer a Grep para limitar o número de linhas que pode ser produzido nessa situação. Para fazer isso, usaremos a bandeira “-m.”O comando ficará assim:
$ grep -m 10 "instalado" apt-packages-insalled-1.TXT
Aqui, grep Imprimirá apenas os 10 primeiros dos padrões correspondentes.
Usando grep com Stdout
O stdout é um fluxo de arquivo. É uma característica poderosa das conchas (como a festa). É um arquivo temporário que contém a saída do comando anterior. Quando o próximo comando é executado, o valor de Stdout é atualizada. Aprender mais sobre Stdin, Stderr, e Stdout em Bash.
O comando Grep também pode funcionar com Stdout contente. Por exemplo, você pode canalizar a saída de um comando para grep trabalhar em.
No exemplo a seguir, o comando apt retorna a lista de todos os pacotes instalados no sistema. Nós canalizamos a saída para grep e procure o termo "dkms" na saída. De acordo com grepO comportamento padrão, ele imprimirá todas as linhas que contêm a string.
$ APT LIST -Instalação | grep "dkms"
A saída pode alertar que o uso do APT em scripts não é recomendado, pois o APT não oferece uma interface CLI estável. Saiba mais sobre o gerente de pacote APT no Ubuntu.
Pensamentos finais
Este é um breve guia sobre alguns dos usos mais comuns do grep comando. Para dominar grep, É recomendável conferir este mega guia demonstrando 30 exemplos de grep.
A página de ajuda de grep Imprime uma página curta de todas as opções disponíveis.
$ grep --help
A página do homem de grep Contém todas as opções com explicações detalhadas.
$ Man Grep
Para iniciantes, este guia sobre grep O comando no Linux é um excelente ponto de partida.
Computação feliz!