Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 使用头尾grep为唯一事务id提取日志_Shell_Unix - Fatal编程技术网

Shell 使用头尾grep为唯一事务id提取日志

Shell 使用头尾grep为唯一事务id提取日志,shell,unix,Shell,Unix,Samplelog.log 注意:123456789、987654321和121212121是事务ID 对于上面的日志文件,如何使用head、tail和grep,这将导致以下被截断的日志:- Log Level A | Start log creation | 987654321 Logging System start Checking data cache Sending out email Stop log creation | 987654321 因此,基本上,我的要求是检查事务ID的

Samplelog.log

注意:123456789、987654321和121212121是事务ID

对于上面的日志文件,如何使用head、tail和grep,这将导致以下被截断的日志:-

Log Level A | Start log creation | 987654321
Logging System start
Checking data cache
Sending out email
Stop log creation | 987654321
因此,基本上,我的要求是检查事务ID的第一个实例-987654321,并将日志拉到该事务ID的最后一个实例。此外,日志文件非常大,因此该方法也需要注意这一点。

您可以使用此awk:

awk -v id=987654321 '/ Start log / && $NF==id{p=1}
                     p; /^Stop log / && $NF==id{exit}' sample.log 
Log Level A | Start log creation | 987654321
Logging System start
Checking data cache
Sending out email
Stop log creation | 987654321

谢谢,我也要试试。我假设这必须作为一个shell脚本而不是命令行来执行。这实际上是一个命令行。您只需运行:awk-vid=987654321'/Start log/&&&NF==id{p=1}p/^来自Unix命令行的Stop log/&&$NF==id{exit}sample.log。
awk -v id=987654321 '/ Start log / && $NF==id{p=1}
                     p; /^Stop log / && $NF==id{exit}' sample.log 
Log Level A | Start log creation | 987654321
Logging System start
Checking data cache
Sending out email
Stop log creation | 987654321