você está aqui: Home  → Arquivo de Mensagens

Grep -p para Linux ou Cygwin

Colaboração: Eduardo Sousa

Data de Publicação: 28 de agosto de 2015

Sou usuário constante do AIX, sempre me questionei, porque não existe a facilidade do grep -p no Linux.

Da escassa informação encontrada no Oráculo, verifiquei que era possível utilizar Perl e o todo poderoso AWK para esta tarefa.

Então, mãos a obra:

Para filtrar um arquivo com o awk uso a seguinte syntax:

  awk '/filtro/' arquivo.txt
  more arquivo.txt | awk '/filtro/'

Para filtrar um arquivo com o awk definindo linha,campo e delimitador, uso a seguinte syntax:

  awk '/filtro/' RS= 'ORS=\n\n' FS= 'OFS=\n'
  more arquivo.txt | awk '/filtro/' RS= 'ORS=\n\n' FS= 'OFS=\n'

Explicativo:

No comando acima insiro o valor do Filtro, Separo o registro com 2 linhas vazias no final e Separo o campo de cada registro com uma linha vazia.

FS = Separador de Campo
OFS = Saída do Separador de Campo
RS = Separador de Registro
ORS = Saída do Separador de Registro

Utilizando a mesma linha acima, aproveitei e criei o grep -vp

  awk '!/filtro/' RS= 'ORS=\n\n' FS= 'OFS=\n' arquivo.txt
  more arquivo.txt | awk '!/filtro/' RS= 'ORS=\n\n' FS= 'OFS=\n'

Para facilitar o dia-adia criei o script abaixo:

Obs: Para criar o grep-vp adicionar ! na penúltima linha ( !/'"$STRING"'/{print} )

  #!/bin/sh
  #
  # Grep -p for Cygwin or Linux
  #
  # Author: Eduardo Sousa        Date: 25/08/2015
  #
  # Copy "alias grep-p='/bin/grep-p'" in ~/home/user/.bashrc
  #
  # Syntax: grep-p or grep_p
  #
  STRING="$1"
  INFILE="$2"
  awk '
  BEGIN {
  RS=""
  ORS="\n\n"
  FS="\n"
  OFS="\n"
  }
  /'"$STRING"'/{print}
  ' ${INFILE}
Eduardo Sousa, UNIX/Linux user, trabalha como Analista de Telecomunicações e TI desde 1999.


Veja a relação completa dos artigos de Eduardo Sousa

 

 

Opinião dos Leitores

Eduardo Sousa
31 Ago 2015, 12:02
Olá Ivan, o grep -p filtra por blocos/paragrafos. É muito útil quando se está analisando logs e necessita também das informações adicionais além da linha onde contém somente o valor de filtro que usou.
Ivan Apolonio
31 Ago 2015, 09:32
Legal, mas o que faz o grep -p??
Felipe
29 Ago 2015, 10:55
Ótima colaboração, usarei muito daqui em diante.

Abs.
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script