Программа, над которой я работаю, использует grep для поиска в системном журнале определенного предупреждения, однако элемент записи системного журнала, который я ищу, будет относиться именно к этой записи и поэтому будет фактически «случайным».

Примером того, что я ищу, может быть:

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

Заранее спасибо.

1 ответ1

-2

Вам нужно использовать WildCards (или Globbing Patterns) в команде grep следующим образом:

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

.* (Также отмечен @ dsstorefile1 в комментариях) здесь используется шаблон сглаживания. Чтобы получить более подробную информацию о паттернах Globbing, обратитесь к man-страницам.


man 7 glob

Который покажет это:

     . (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.

Теперь, комбинируя оба из них, вы получите:

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

Также, как указал @Bob в комментариях, используя .*? намного лучше чем .*

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .