awk 内嵌正则 提取字符串_实践:awk只提取正则匹配的指定字符串内容

1. 先过滤原始文件中不需要的内容——含有"@_@rm"的行,使用ag 的-v选项过滤掉:

ag -v "@_@rm" mobai-resultmedia.txt > mobai-resultmedia_norm.txt

注意:ag比grep快,所以用ag。 上面生成的文件每行会有其在源文件中的行号

2. 检查下生成的文件:

2210 $ head -2 mobai-resultmedia_norm.txt

3:2017-06-01/conversion.log_2017-06-01T17:2017-06-01T17:51:51.889+08:00@_@{os=iphone, ip=117.136.8.78, ts10=1496308916, clickid=666c45_P24P19R4963089135815383153_1496308916481, source=talkingdata, ua=Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_2 like Mac OS X) AppleWebKit/603.2.4 (KHTML, offer_id=666, os_v=10.3.2, mode=0, sectime=175151, daytime=20170601, n_id=45, ts=1496308916481, cid=P24P19R4963089135815383153}@_@http://px.resultsmedia.com/srv/px.php?px=1358&t=0&pt=1&adv_id=2776&subid=P24P19R4963089135815383153&offerid=666

5:2017-06-01/conversion.log_2017-06-01T17:2017-06-01T17:46:26.81+08:00@_@{os=iphone, ip=112.12.246.144, ts10=1496308597, clickid=666c45_P24P48R4963085974429795014_1496308597485, source=talkingdata, ua=Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, offer_id=666, os_v=10.3.1, mode=0, sectime=174626, daytime=20170601, n_id=45, ts=1496308597485, cid=P24P48R4963085974429795014}@_@http://px.resultsmedia.com/srv/px.php?px=1358&t=0&pt=1&adv_id=2776&subid=P24P48R4963085974429795014&offerid=666

3. 对上述文件中每一行,只提取datetime,ip,os_v的内容。

所以写下如下别名/函数:

function daytimeiposv(){ awk 'BEGIN{FS=OFS=","}{for(i=1;i<=NF;i++){if($i ~ /os_v=|ip=|daytime=/)lines=lines","$i;};print lines;lines=""}' $@;}

注意:尽管指定OFS=",",如果不写成 lines=lines","$i ,输出的分隔符还是空格,为何?awk版本原因?

4. 使用上述函数测试 :

head -3 mobai-resultmedia_norm.txt|daytimeiposv

, ip=117.136.8.78, os_v=10.3.2, daytime=20170601

, ip=112.12.246.144, os_v=10.3.1, daytime=20170601

, ip=117.136.79.80, os_v=10.3.2, daytime=20170601

5. 结果符合要求(使用逗号分割,方便直接当做csv文件使用excel打开)。

直接执行命令得到目标文件:

daytimeiposv mobai-resultmedia_norm.txt > mobai-resultmedia_norm_daytime_ip_osv.txt

6. 检查目标文件内容正确性:

tail -2 mobai-resultmedia_norm_daytime_ip_osv.txt

, ip=223.72.164.22, os_v=10.3.2, daytime=20170630

, ip=223.104.174.89, os_v=10.1.1, daytime=20170630

head -2 mobai-resultmedia_norm_daytime_ip_osv.txt

, ip=117.136.8.78, os_v=10.3.2, daytime=20170601

, ip=112.12.246.144, os_v=10.3.1, daytime=20170601

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值