Como fazer Regexp / busca de padrões em arquivos gunzipped?

1

Como usar a regexp / pesquisa de padrões em arquivos gunzipped. Por exemplo, ummm ... vamos usar -

/usr/share/doc/linux-image-4.8.0-1-amd64$ zcat changelog.gz | less

Agora, a maneira que eu uso é quando leio o conteúdo por menos, use / para localizar o nome ou qualquer termo que eu use, mas isso não funciona / escala bem se o nome / termo for repetido muitas vezes.

Eu também tentei -

 /usr/share/doc/linux-image-4.8.0-1-amd64$ zcat changelog.gz | grep $search-term | less

Eu obtenho os nomes / termo de pesquisa, mas sem o contexto circundante, como data e outras coisas.

Existe uma maneira de obter o termo de pesquisa destacado mesmo que seja duplicado n vezes durante a leitura do changelog.gz

Um exemplo do que quero dizer link

Como pode ser visto, eu obtenho o termo de pesquisa / regexp, mas sem contexto de data e hora, e pode ser um pouco sem sentido sem saber quando as mudanças aconteceram.

    
por shirish 03.12.2016 / 22:05

2 respostas

2

Use zgrep :

zgrep 'PATTERN' file.gz

Então você pode enviar isso para um pager como less , se desejar.

Nos sistemas GNU (Linux), zgrep irá se comportar como o GNU grep no que diz respeito à coloração, etc.

Para obter o contexto em torno de cada correspondência, use algo como -C 5 (cinco linhas de contexto).

less também destaca as correspondências (por padrão, a menos que seja desativado com -G ):

zless -p 'PATTERN' file.gz

Isso abrirá o arquivo descompactado em less e pesquisará PATTERN . Use n para pular para a próxima coincidência no arquivo, ou N para voltar para a correspondência anterior.

    
por 23.08.2017 / 19:58
1

Para descompactar e ver as correspondências em cores, no contexto, faça uso dos argumentos gre-C e -color. Exemplo abaixo.

gzip -dc changelog.gz | grep -C 5 --color $search-term
    
por 03.12.2016 / 22:08