![CEO da Microsoft, Satya Nadella, lamenta ter matado Windows Phones](/f/b6e88201e0b4e2afcc16c6ef16ac137c.png?width=100&height=100)
Você já foi confrontado com a tarefa de procurar uma string ou padrão específico em um arquivo, mas não tem ideia de por onde começar a procurar? Pois bem, aqui está grep para o resgate!
grep é um poderoso buscador de padrões de arquivos que vem equipado em todas as distribuições de Linux. Se, por qualquer motivo, ele não estiver instalado em seu sistema, você pode instalá-lo facilmente através do seu gerenciador de pacotes (apt-get em Debian/Ubuntu e yum em RHEL/CentOS/Fedora).
$ sudo apt-get install grep # Debian / Ubuntu
$ sudo yum install grep # RHEL / CentOS / Fedora
Eu descobri que a maneira mais fácil de molhar os pés com grep é apenas mergulhar de cabeça e usar alguns exemplos do mundo real.
Digamos que você acabou de instalar uma nova cópia do novo Ubuntu na sua máquina, e que você vai dar Pitão roteirizar uma cena. Você tem vasculhado 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 foi instalado em seu sistema pelo
Ubuntu instalador ou se instalou algum módulo. Basta executar este comando:# dpkg -l | grep -i python
ii python2.7 2.7.3-0ubuntu3.4 Linguagem orientada a objetos de alto nível interativa (versão 2.7) ii python2.7-minimal 2.7.3-0ubuntu3.4 Subconjunto mínimo da linguagem Python (versão 2.7) ii python-openssl 0.12-1ubuntu2.1 Python wrapper em torno da biblioteca OpenSSL. ii python-pam 0.4.2-12.2ubuntu4 Uma interface Python para a biblioteca PAM
Primeiro, nós corremos dpkg –l, que lista os instalados * .deb pacotes em seu sistema. Em segundo lugar, canalizamos essa saída para grep –i python, que afirma simplesmente "vá para grep e filtre e retorne tudo com 'python' nele." O -eu opção está lá para ignorar maiúsculas e minúsculas, como grep faz distinção entre maiúsculas e minúsculas. Usando o -eu Essa opção é um bom hábito de entrar, a menos, é claro, que você esteja tentando fazer uma pesquisa mais específica.
O grep também pode ser usado para pesquisar e filtrar em arquivos individuais ou em vários arquivos. Vamos ver este cenário:
Você está tendo alguns problemas com o seu Apache Web Server, e você entrou em contato com um dos muitos fóruns incríveis na rede pedindo ajuda. A alma gentil que responde a você pediu que você postasse o conteúdo do seu /etc/apache2/sites-available/default-ssl Arquivo. Não seria mais fácil para você, o cara que está ajudando você e todos que estão lendo, se você pudesse remover todas as linhas comentadas? Bem, você pode! Basta executar isto:
# grep –v “#” / etc / apache2 / sites-available / default-ssl
O –V opção diz 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.
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 todos os * .mp3 arquivos do artista JayZ, mas você não quer nenhuma das faixas remixadas. Usando um encontrar comando com um par de grep canos farão o truque:
# encontrar. –Name “* .mp3” | grep –i JayZ | grep –vi “remix”
Neste exemplo, estamos usando find para imprimir todos os arquivos com um extensão * .mp3, canalizando para grep –i para filtrar e imprimir todos os arquivos com o nome “JayZ”E, em seguida, outro tubo para grep –vi que filtra e não imprime todos os nomes de arquivos com a string (em qualquer caso) “remixar”.
Leitura sugerida:35 Exemplos práticos do comando Find do Linux
Outras opções são -UMA e –B switches, que exibe a linha combinada e o número de linhas que vêm antes ou depois da string de pesquisa. Embora a página do manual forneça uma explicação mais detalhada, acho mais fácil lembrar as opções como -UMA = depois, e –B = antes da:
# ifconfig | grep –A 4 eth0. # ifconfig | grep -B 2 UP
O grep –C opção é semelhante, mas em vez de imprimir as linhas que vêm antes ou depois da string, ela imprime as linhas em qualquer direção:
# ifconfig | grep –C 2 lo
Semelhante a tubulação a grep string para contagem de palavras (banheiro programa) a opção integrada de grep pode realizar o mesmo para você:
# ifconfig | grep –c inet6
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” setup..py
Se você gostaria de pesquisar por uma string no diretório atual junto com todos os subdiretórios, você pode especificar o –R opção para pesquisar recursivamente:
# grep –r “função” *
Passando no -C opção de grep procura por todo o padrão que está na string. Por exemplo, usando:
# ifconfig | grep –w “RUNNING”
Irá imprimir a linha que contém o padrão entre aspas. Por outro lado, se você tentar:
# ifconfig | grep –w “RUN”
Nada será retornado, pois não estamos procurando um padrão, mas uma palavra inteira.
Merecem alguma menção os derivados de grep. O primeiro é zgrep, que, semelhante a zcat, é para uso em compactado arquivos. Leva as mesmas opções que grep e é usado da mesma maneira:
# zgrep –i error /var/log/syslog.2.gz
O egrep é outra derivada que significa “Expressão regular global estendida”. Ele reconhece metacaracteres de expressão adicionais, como em +? | e ().
Leitura sugerida:Qual é a diferença entre Grep, Egrep e Fgrep no Linux?
egrep é muito útil para pesquisar arquivos-fonte e outras partes de código, caso seja necessário. Ele pode ser invocado a partir do grep regular especificando o –E opção.
# grep –E
O fgrep pesquisa um arquivo ou lista de arquivos para uma string de padrão fixo. É 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 robusto scripts de shell, para começar.
Seja criativo, experimente as opções no página man, e chegar a expressões grep que servem aos seus próprios propósitos!