Unix ubuntu中的模式匹配日志

Unix ubuntu中的模式匹配日志,unix,ubuntu,grep,pattern-matching,Unix,Ubuntu,Grep,Pattern Matching,myfile.log包含以下内容: ----- 12:08:12 (123.123.123.123) -------------------------------- Some code here... This section has no specified length... ----------------------------------------------------------------- ----- 12:10:15 (254.14.187.123) --------

myfile.log包含以下内容:

----- 12:08:12 (123.123.123.123) --------------------------------
Some code here...
This section has no specified length...
-----------------------------------------------------------------


----- 12:10:15 (254.14.187.123) --------------------------------
Some code here...
This section has no specified length...
It could be 3 lines, or 4 lines, or 20 lines. 
-----------------------------------------------------------------
我想使用类似grep的东西来提取包含IP地址123.123.123.123的每个块。例如,将返回以下内容:

----- 12:08:12 (123.123.123.123) --------------------------------
Some code here...
This section has no specified length...
-----------------------------------------------------------------
编辑:
感谢到目前为止的答案,我忘了提到我需要它以与
tail
相同的方式流式传输输出

这能满足你的需求吗

sed -n '/123\.123\.123\.123/,/^-*$/{p}' yourFile

这能满足你的需要吗

sed -n '/123\.123\.123\.123/,/^-*$/{p}' yourFile

您可以使用
grep-A
。这将在匹配行后打印尾随上下文的
NUM

您可以使用
grep-A
。这将在匹配行后打印尾随上下文的
NUM

我将使用类似于:

sed -n '/^-----.*(123\.123\.123\.123) ---/,/^------/p' file.log
它首先匹配一行,以5个连字符开头,然后包含许多任意字符,然后是括在括号中的IP地址,后面是一些连字符。然后匹配所有行,直到遇到以5个连字符开头的行。可以使用
/^-\{5,\}$/
指定仅包含连字符的行(至少5行)

关于你问题的编辑:关于流媒体,我想你的意思是
tail-f
?只需将其输出导入sed:

tail -f file.log | sed -n '/^-----.*(123\.123\.123\.123) ---/,/^------/p'

我会使用类似于:

sed -n '/^-----.*(123\.123\.123\.123) ---/,/^------/p' file.log
它首先匹配一行,以5个连字符开头,然后包含许多任意字符,然后是括在括号中的IP地址,后面是一些连字符。然后匹配所有行,直到遇到以5个连字符开头的行。可以使用
/^-\{5,\}$/
指定仅包含连字符的行(至少5行)

关于你问题的编辑:关于流媒体,我想你的意思是
tail-f
?只需将其输出导入sed:

tail -f file.log | sed -n '/^-----.*(123\.123\.123\.123) ---/,/^------/p'

谢谢,这不起作用,因为IP地址和<代码>----------------------------------------------之间的行数可能会有所不同。谢谢,这不起作用,因为IP地址和<代码>------------------------------------之间的行数可能会有所不同。您可能希望使开始的正则表达式更加严格,在这种情况下,某些数据段也可能与IP地址匹配<代码>sed-n/^-[0-9::][*\(123\.123\.123\.123\.123\)-*$/,/^-*$/p'您的文件。(请注意,
p
命令周围没有括号,当您只有一个操作时,它们是可选的。)您可能希望使开始的正则表达式更严格,以防某些数据节可能与IP地址匹配<代码>sed-n/^-[0-9::][*\(123\.123\.123\.123\.123\)-*$/,/^-*$/p'您的文件。(请注意,
p
命令周围没有括号,当您只有一个操作时,它们是可选的。)可以安全地说日志文件中的一个部分由。。。IP地址。。。。空行?或者某个部分中可能有空行?您应该能够获取任何工作解决方案并将其链接在一起,就像
tail-f logfile | sed…
。祝你好运。可以安全地说日志文件中的一个部分由。。。IP地址。。。。空行?或者某个部分中可能有空行?您应该能够获取任何工作解决方案并将其链接在一起,就像
tail-f logfile | sed…
。祝你好运