//Exibindo linhas anteriores e posteriores à string pesquisadas no Linux com o GREP
shell-script

Exibindo linhas anteriores e posteriores à string pesquisadas no Linux com o GREP

Neste post vou falar sobre o grep, muitos não sabem mas o significado do nome é (Globally Search a Regular Expression and Print), o nome já diz tudo o que esse comando faz, e deixando mais claro a ideia é procurar texto em uma string ou dentro de arquivos e mostrar linhas, ocorrências, usar combinações para pesquisar e o resultado da pesquisa ser mostrado na tela.

Você não precisa se preocupar em instalar o grep, pois ele já esta no seu Linux, para confirmar e verificar a versão veja o comando abaixo:

Usage: grep [OPTION]… PATTERN [FILE]…
Try ‘grep –help’ for more information.

grep (GNU grep) 2.16
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Mike Haertel and others, see <http://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>.

Agora segue os parâmetros que iremos utilizar e suas funções:

-c Conta quantas vezes apareceu a string que esta pesquisando
-v Mostra na tela “tudo” menos onde houver a ocorrência da string pesquisada
-i Realiza uma busca pela string ignorando o case, sendo case-insensitive
-o Ira mostrar na tela apenas as ocorrências da string pesquisada ignorando o resto
-n Ira mostrar na tela na primeira coluna a linha onde encontrou a string pesquisada
-B Numero de linhas a serem impressas antes da linha que contem a string pesquisada [BEFORE]
-A Numero de linhas a serem impressas na tela depois da encontrar a linha com a string [AFTER]
-C Quantidade de linhas antes e depois da linha que contem a string [CONTEXT]
-q Ira procurar pela string informada, porém estará em modo silencioso, nada sera impresso na tela, porém caso encontre o comando encerra com 0, caso não encontre nada será 1
-E Extende o uso de Regex no padrão e combinação, usando logica AND e OR por exemplo
-f Um arquivo com combinações de padrões com Regex, podendo usar varias combinações
-l Mostra somente o nome do arquivo onde foi encontrado a string pesquisada
-L Semelhante ao -v, porque mostra apenas os arquivo que não contem a string informada
-h Pesquisa varias arquivos, diretórios se com -r mas não mostra o nome dos arquivos
-r Ira realizar uma pesquisa recursiva em todos os diretórios a partir do informado
–color Deve-se passar o parâmetro ‘never’ caso não queira que a saída marque com cor a string ou ‘auto’ e ‘always’ para operar conforme necessite. Pode mudar a cor alterando GREP_COLOR, GREP_COLORS no environment

Irei demonstra apenas as opç~es refente a linhas mais como descrito na tabela acima pode-se utilizar diversas opções.

Uma delas é a possibilidade de mostrar o que há antes e depois da string pesquisada.

Vamos considerar o arquivo teste.txt:

agua
batata
carro
dado
escola
faca

Se quisermos procurar por leite, mas também quisermos saber as palavras que estão na linha anterior, basta utilizarmos o grep com o parâmetro -B (before) seguido do número de linhas que queremos exibir.

batata

carro

Da mesma forma existe o parâmetro -A (after) para exibir as linhas posteriores.

agua

batata

carro

Um outro parâmetro também muito útil é o -w, que procura pela ocorrência da palavra, e não apenas a sequência de letras.

Digamos que você, agora, queira ver se colocou sal na sua lista de compras. Normalmente você faria:

carro

dado

escola

Mas se você utilizar o -w…

dado

Em todos os exemplos acima é possível utilizar o parâmetro -n, que exibe o número da linha em que a ocorrência da palavra pesquisada aparece.

Leia mais sobre Shell Script


Sou Analista de Sistemas Bacharel em Sistemas da Informação, Certificado MCTS 70-680 / MOS, Trabalho como Administrador de Redes e Servidores Windows e Linux! Minhas atividades favoritas são: Caminhar, Fazer Trilhas, Natureza, Insetos e claro ler sobre Tecnologia.