12 exemplos práticos do comando linux grep

12 exemplos práticos do comando linux grep

Você já foi confrontado com a tarefa de procurar uma string ou padrão específico em um arquivo, mas não tenho idéia de onde começar a procurar? Bem então, aqui está grep para o resgate!

grep é um poderoso pesquisador de padrões de arquivos que vem equipado em todas as distribuições de Linux. Se por qualquer motivo, ele não estiver instalado no seu sistema, você pode instalá -lo facilmente através do seu gerenciador de pacotes, como mostrado.

$ sudo apt install grep [on Debian, Ubuntu e Mint] $ sudo yum install grep [on RHEL/CENTOS/FEDORA e Rocky Linux/Almalinux] $ sudo emerge -a sys -apps/grep [em Gentoo Linux] $ sudo apk adicione grep [em Alpine Linux] $ sudo pacman -s grep [em Arch Linux] $ sudo zypper instalar grep [on OpenSuse] 

Eu descobri que a maneira mais fácil de molhar seus pés com o Comando Grep é apenas mergulhar e usar alguns exemplos do mundo real.

1. Pesquise e encontre arquivos no Linux

Digamos que você acabou de instalar uma nova cópia do novo Ubuntu em sua máquina e que você vai dar Pitão Script um tiro.

Você está vasculhando a web em busca de tutoriais, mas vê que existem duas versões diferentes de Pitão Em uso, e você não sabe qual versão do Python está instalada no Ubuntu pelo instalador, ou se instalou algum módulo.

Basta executar o seguinte comando dpkg com grep como mostrado:

# dpkg -l | grep -i python
Encontrando arquivos com comando grep
ii libpython3-stdlib: amd64 3.8.2-0UBUNTU2 AMD64 INTERACIONAÇÃO INTERACIONAL DO LANGUALEGIDA DE ESCRITÓRIO DE ESTILO (VERSÃO DE PASTILHO PADRÃO) II LIBPYTHON3.8: AMD64 3.8.10-0UBUNTU1 ~ 20.04.5 AMD64 Biblioteca de tempo de execução do Python compartilhada (versão 3.8) ii libpython3.8-minimal: AMD64 3.8.10-0UBUNTU1 ~ 20.04.5 AMD64 Subconjunto mínimo da linguagem Python (versão 3.8) ii libpython3.8-stdlib: amd64 3.8.10-0UBUNTU1 ~ 20.04.5 AMD64 INTERACIONATIVA INTERACIONENTE ORIENTEDENTE DE ORIENTADO DE OBJETOS (Biblioteca Padrão, Versão 3.8) II Python-Apt-Common 2.0.0Buntu0.20.04.8 Todo interface Python para libapt-pkg (locales) ii python3 3.8.2-0UBUNTU2 AMD64 INTERACIONAÇÃO LANGUMA INTERACIONAL DO RESULTADO DE ESCRITÓRIO (VERSÃO PADRÃO PYTHON3) II Python3-Apport 2.20.11-0buntu27.24 Biblioteca All Python 3 para Apport Crash Report Manipando II Python3-Apt 2.0.0Buntu0.20.04.8 AMD64 Python 3 Interface para Libapt-PKG II Python3-Aptdaememon 1.1.1+BZR982-0UBUNTU32.3 Todos os módulos Python 3 para o servidor e cliente do aptdaemon II python3-apropdaemon.gtk3widgets 1.1.1+BZR982-0UBUNTU32.3 Todos os widgets Python 3 GTK+ 3 para executar um Aptdaemon Client II Python3-Blinker 1.4+DFSG1-0.3UBUNTU1 Todo biblioteca de sinalização de objeto para objeto e de transmissão rápido II Python3-BRLAPI: AMD64 6.0+dfsg -4ubuntu6 amd64 acesso de exibição em braille via BRltty - Python3 Bindings… 

Primeiro, nós corremos dpkg -l, que listas instaladas *.Deb pacotes em seu sistema. Segundo, nós colocamos essa saída para grep -i Python, que simplesmente afirma: “Vá para Grep e filtre e retorne tudo com 'Pitão' iniciar.”

O -eu a opção está lá para ignorar o caso, como grep é sensível ao caso. Usando o -eu A opção é um bom hábito de entrar, a menos que, é claro, você esteja tentando acertar uma pesquisa mais específica.

2. Pesquisar e filtrar arquivos no Linux

O grep também pode ser usado para pesquisar e filtrar em arquivos individuais ou vários arquivos. Vamos pegar este cenário:

Você está tendo algum problema com o seu Servidor da web apache, E você entrou em contato com um dos muitos fóruns incríveis na rede pedindo alguma ajuda.

A alma gentil que responde a você pediu que você postasse o conteúdo de seu /etc/apache2/apache2.conf arquivo. Não seria mais fácil para você, o cara ajudando você e todo mundo lendo se você pudesse remover todas as linhas comentadas? Bem, você pode! Apenas execute isso:

# grep -v ^\#/etc/apache2/apache2.conf | grep . 

O -v a opção informa grep Para inverter sua saída, o que significa que, em vez de imprimir linhas correspondentes, faça o oposto e imprima todas as linhas que não correspondem à expressão, neste caso, o # linhas comentadas.

Observe que também usamos grep . no final, a fim de ocultar a saída de todas as linhas vazias. Dessa forma, vemos apenas as configurações de configuração em nosso terminal.

Imprima o conteúdo do arquivo excluindo comentários e linhas em branco
DefaultruntImedir $ apache_run_dir pidfile $ apache_pid_file Timeout 300 mantém -se em maxkeepalivereQuests 100 keepalivETimeout 5 usuário $ apache_run_user Grupo $ ApacheG_RUN_GROUP.Loglevel Warn Incluir Mods-opcionais-habilitado/*.carga incluir mods-opcionais habilitados/*.Conf incluem portas.Conf Opções seguem os links de allowoverride, nenhum requer tudo negado  

3. Encontrar tudo .arquivos mp3 no Linux

O grep pode ser muito útil para filtrar de stdout. Por exemplo, digamos que você tenha uma pasta inteira cheia de arquivos de música em vários formatos diferentes.

Você quer encontrar todo o *.mp3 arquivos do artista Jayz, Mas você não quer nenhuma das faixas remixadas. Usando um Encontre comando com alguns grep Os tubos farão o truque:

# encontrar . -nome "*.mp3 ”| grep -i jayz | grep -vi “remix” 

Neste exemplo, estamos usando encontrar Para imprimir todos os arquivos com um *.mp3 extensão, canalizando -o para grep -i Para filtrar e imprimir todos os arquivos com o nome “Jayz”E então outro tubo para grep -vi que filtra e não imprime todos os nomes de arquivos com a string (em qualquer caso) “remix”.

[Você também pode gostar: 35 Exemplos Práticos do Comando Linux Find]

4. Exibir o número de linhas antes ou depois da sequência de pesquisa

Outras opções são o -A e -B interruptores, que exibem a linha correspondente e o número de linhas que vêm antes ou depois da string de pesquisa.

Embora a página do homem dê uma explicação mais detalhada, acho mais fácil lembrar as opções como -A = depois, e -B = antes:

# ifconfig | grep -a 4 Inet # ifconfig | grep -b 2 up 
Imprimir número de linhas antes e depois da string

5. Impressões Número de linhas ao redor da correspondência

O Grep's -C A opção é semelhante, mas em vez de imprimir as linhas que vêm antes ou depois da string, imprime as linhas em qualquer direção:

# ifconfig | grep -c 2 lo Erros TX 0 cair 0 OURNUNS 0 transportadora 0 Colisões 0 lo: sinalizadores = 73 mtu 65536 INET 127.0.0.1 máscara de rede 255.0.0.0 INET6 :: 1 Prefixlen 128 Scopeid 0x10 Loop TXQueuElen 1000 (Loopback local) Rx Pacotes 15314 Bytes 1593769 (1.5 mb) erros rx 0 cair 0 excedentes 0 quadro 0 

6. Conte o número de partidas

Semelhante a tubular um grep string to word count (comando wc) a opção interna do Grep pode executar o mesmo para você:

# ifconfig | Grep -C INET6

7. Pesquisar arquivos por string fornecida no Linux

O -n opção para grep é muito útil ao depurar arquivos durante erros de compilação. Ele exibe o número da linha no arquivo da string de pesquisa fornecida:

# Grep -n "Main" Configuração.py

8. Pesquise uma string recursivamente em todos os diretórios

Se você deseja procurar uma string no diretório atual, juntamente com todos os subdiretos, você pode especificar o -r opção para pesquisar recursivamente:

# grep -r "função" * 

9. Procure por todo o padrão

Passando pelo -c Opção para buscar Grep por todo o padrão que está na string. Por exemplo, usando:

# ifconfig | Grep -w "Running"

Imprimirá a linha que contém o padrão nas cotações. Por outro lado, se você tentar:

# ifconfig | Grep -w "Run"
Encontre todo o padrão

Nada será devolvido, pois não estamos procurando um padrão, mas uma palavra inteira.

10. Pesquise uma string em arquivos gzipped

Merecedores alguma menção são os derivados de Grep. O primeiro é zGrep, que, semelhante a zcat, é para uso em Gzipped arquivos. São necessárias as mesmas opções que grep e é usado da mesma maneira:

# zGrep -i Error/var/log/syslog.2.gz 
Pesquise string em arquivos gzipped

11. Combinar expressões regulares em arquivos

O comando EGREP é outro derivado que significa “Expressão regular global estendida”. Reconhece meta-caracteres de expressão adicionais como no + ? | e ().

[Você também pode gostar: o que é a diferença entre Grep, Egrep e FGREP no Linux? ]

egrep é muito útil para pesquisar arquivos de origem e outras peças de código, deve -se surgir. Pode ser invocado de regular grep especificando o -E opção.

# grep -e 

12. Pesquise uma string de padrão fixo

O FGREP Pesquisa um arquivo ou lista de arquivos para uma sequência de padrões fixa. É o mesmo que grep -f. Uma maneira comum de usar FGREP é passar um arquivo de padrões para ele:

# fGrep -f file_full_of_patterns.txt file_to_search.TXT

Este é apenas um ponto de partida com grep, Mas como você provavelmente pode ver, é inestimável para uma variedade de propósitos. Além dos comandos simples de uma linha que implementamos, grep pode ser usado para escrever poderoso Cron empregos e robustos scripts de shell, para começar.

[Você também pode gostar: 11 comandos avançados do Linux 'Grep' em classes de personagens e expressões de suporte]

Seja criativo, experimente as opções no página de homem, e criar Expressões grep que servem a seus próprios propósitos!