为了账号安全,请及时绑定邮箱和手机立即绑定

linux:怎样从复杂的log中提取信息

linux:怎样从复杂的log中提取信息

holdtom 2019-04-23 15:18:20
例如在文件1.log中id=1a=1,b=2,c=3,d=4,e=5....,z=100id=2a=3,b=4,d=20,e=6,f=7,...,z=30id=3a=4,b=4,c=2,d=5,e=8,...,z=29....现在我想统计在log中d的分布~有什么好方法吗?grep每次都是输出整行,没法提取一个关键词的信息。
查看完整描述

2 回答

?
湖上湖

TA贡献2003条经验 获得超2个赞

awk的解法:#!/bin/bash
awk-F","'
NF==0{next}#skipblankline
NF==1{printf"%s",$1}#foridline
#fordataline
{
for(i=1;i<=NF;i++){
split($i,a,"=");
if(a[1]=="d")print$i;
}
}
'1.log结果如下:
id=1d=4
id=2d=20
id=3d=5awk的好处在于可以对输入/输出的格式作比较精细的处理。
                            
查看完整回答
反对 回复 2019-04-23
?
元芳怎么了

TA贡献1798条经验 获得超7个赞

先去掉id=中的d=,然后
grep-o参数提取匹配的模式。再把数字再抓出来,awk或者cut就可以了。grep-v"id=[0-9]*"1.log|grep-o"d=[0-9]*"|awk-F'=''{print$2}'或者,用egrep,grep-v"id=[0-9]*"1.log|egrep-o"d=[0-9]+"|cut-d'='-f2方法还是多啦,其他sed那些都可以用;
                            
查看完整回答
反对 回复 2019-04-23
  • 2 回答
  • 0 关注
  • 309 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信