De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.

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.

Adicionar comentário

* Campos obrigatórios
5000
Powered by Commentics

Comentários

Nenhum comentário ainda. Seja o primeiro!


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