Como eu enviaria um comando ao grep para procurar por uma determinada string, quando parte dessa string é desconhecida?

0

O programa em que estou trabalhando utiliza grep para pesquisar um log do sistema em busca de um alerta em particular, no entanto, um elemento da entrada do syslog que estou procurando se referirá especificamente a essa entrada e, portanto, será efetivamente "aleatório". . "

Um exemplo do que eu acho que estou procurando seria:

tail -f log | grep "string {ignore} string"

Obrigado antecipadamente.

    
por user4493605 05.05.2018 / 06:09

1 resposta

-2

Você precisa usar WildCards (ou padrões de globbing) no comando grep da seguinte forma:

 tail -f log | grep "some_string.*some_string"

Em que .* (também apontado por @ dsstorefile1 nos comentários) é o padrão de globbing usado aqui. Para obter mais detalhes sobre os Padrões Globbing, consulte as páginas de manual.

man 7 glob

O que mostrará isso:

     . (dot) : will match any single character (except end of line) , 
               equivalent to ? (question mark) in standard wildcard expressions.

* (asterisk) : the proceeding item is to be matched zero or more times.
               ie. n* will match n, nn, nnnn, nnnnnnn
                           but not na or any other character.

Agora, combinando os dois, você obtém:

.* (dot and asterisk) : match any string, equivalent to * in standard wildcards.

Além disso, como apontado por @Bob nos comentários, usar .*? é muito melhor do que .*

    
por 05.05.2018 / 07:20