当字符串的某些部分未知时,我该如何通过管道将命令传递给 grep 来搜索某个字符串?

当字符串的某些部分未知时,我该如何通过管道将命令传递给 grep 来搜索某个字符串?

我正在使用的程序用于在grep系统日志中搜索特定警报,但我正在寻找的系统日志条目的某个元素将专门与该条目相关,因此实际上是“随机的”。

我认为我正在寻找的一个例子是:

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

提前致谢。

答案1

你需要使用通配符(或通配符模式)grep这样的命令中:

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

在哪里,.*(@dsstorefile1 在评论中也指出了这一点)这里使用的就是通配符模式。要了解有关通配符模式的更多详细信息,请参阅手册页。


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在评论中指出的那样,使用.*?.*

相关内容