有一段日志,内容大致如下:
xxxxx
xxx[SIP/2.0 xxx
xxxxx
xxx1234
xxx
]
xxxx
其中,SIP/2.0是起始关键字,最后的右方括号是结束关键字(起始关键字和结束关键字在日志里是成对出现的,1234是用户,可能有别的用户的),这一段内容中包含1234这个字符串,用什么命令,怎么提取这样一段内容呢?急求!!
还有补充一下,实际情况是这样的,linux主机上有一个log,记录了很多用户的通话,日志是不断刷新的,我需要用tail -f结合其他命令,在新出来的日志中过滤出我需要的这段内容,再保存到相应的文件中!
我想用sed,但是现在提取出来很多以sip/2.0开始,并以]结束的日志段,由于有很多用户,就有很多段日志,怎么只提取我需要的用户的日志段呢?日志段中间有一个字符串是用户的号码。
追答你能理解我在回答中的shell代码吧?
如果能的话就好办,其中chkEnd是一个自定义的shell函数,让这个值返回三个结果就可以了,0:不是结束,1:是结束语句,但不是想要的用户 2:是结束语句并且是想要的用户
程序做以下修改
1, 变量开始[sip/2.0]为真时( if [ $flg -eq 1 ]; then )
输出当前行到临时文件中( echo $line >> $tempFile )
2. 如果是用户结束,(其他的跟原来一样)
如果是想要的用户
将临时文件内容输出到结果文件
// 如果是想要的用户
清空临时文件
大哥··忘了说了,我是需要用命令提取而不是手工去查找啊!
还有补充一下,实际情况是这样的,linux主机上有一个log,记录了很多用户的通话,日志是不断刷新的,我需要用tail -f结合其他命令,在新出来的日志中过滤出我需要的这段内容,再保存到相应的文件中!
这段内容是一行还是多行呢? 如果是一行就好办了,用for循环写个小脚本,cat grep就行,如果是多行的话,我得搜搜grep大法。。
本回答被网友采纳