GREP para várias cadeias com curinga

0

Estou tentando copiar linhas de um arquivo de log de determinados dias.

Veja um exemplo de como eles se parecem.

2014-05-01T15:53:16+00:00 DEBUG (7): 

2014-04-301T11:08:10+00:00 DEBUG (7):

Este comando GREP funciona apenas para as sequências exatas:

grep -w '2014-04-30\|2014-04-29\|2014-04-28\|2014-04-27\|2014-04-26\|2014-04-25\|2014-04-24\|2014-04-23\|2014-04-22\|2014-04-21\|2014-04-202014-04-19' /test_custom.log > new_file.log

Quando tento adicionar o curinga, não funciona. Eu também tentei várias outras maneiras com o mesmo resultado.

grep -w '2014-04-30*\|2014-04-29*\|2014-04-28*\|2014-04-27*\|2014-04-26*\|2014-04-25*\|2014-04-24*\|2014-04-23*\|2014-04-22*\|2014-04-21*\|2014-04-20*' /test_custom.log > new_file.log

Alguma sugestão?

    
por user 01.05.2014 / 19:39

1 resposta

1

* em uma expressão regular tem um significado diferente do que em um caractere curinga de nome de arquivo. * significa repetir o item anterior zero ou mais vezes . Para apenas dizer "qualquer coisa", você precisa usar .* , onde . significa "qualquer caractere".

Além disso, se você quiser todas as linhas que começam com as datas, elimine o -w e adicione ^ para corresponder ao início das linhas:

grep '^\(2014-04-30\|2014-04-29\|2014-04-28\|2014-04-27\)'

As datas são colocadas entre parênteses para que você não precise repetir o ^ todas as vezes.

    
por 01.05.2014 / 19:57