• linux awk 使用的一个例子


    1. 场景

      从日志中获取漏发奖励的司机id

    2. 日志 如下(需要获取一个时间段的 driverIdStr)

    15:13:34.484 INFO  [DubboServerHandler-10.0.30.43:20899-thread-5] order.service.TOrderInfoServiceImpl:1654  -  调用支付完成登记接口,URL=http://rocky/tOrderHandle/settleTaxiAccount,参数={"phone":"1865558888","cityIdStr":"44","customerIdStr":"4433","driverIdStr":"56398","orderTimeStr":"2018-01-19 14:56:36","activityFlagStr":"2","serviceType":35,"orderPriceStr":"14.00","orderId":"53743"}

     3. 过滤出相关日志  继续处理

    cat 19.log |grep 'settleTaxiAccount,参数='|awk -F '"driverIdStr":' '{print $2}'|awk -F '[,"]+' '{print $2}' > driverId_19.log #一天的 截取的司机id重定向到 文件中

    cat driverId_19.log driverId_20.log |sort|uniq -u > driverId_uniq.log #将多日的司机id 排序 去重 再重定向到结果文件

    mysql balabala...  #导出已有司机id

    comm -23 driverId_uniq.log driver_done.txt # 去除 已有的  -2 不显示在第二个文件中出现的内容; -3 不显示同时在两个文件中都出现的内容;-1:不显示在第一个文件中出现的内容 ;

    4. sed 一把

    cat 19.log 19_1.log  20.log  20_1.log|grep '"cityIdStr":"44"' |grep 'driverIdStr'|sed 's/.*"driverIdStr":"//g'|sed 's/".*$/ /g'|sort|uniq -u > driver_id2.txt

    5. 20180524

    今天遇到从字符串中摘出文案的小需求(双引号里的文字)

    我想到了awk

    好用!

     grep '过滤数单奖活动出错===>订单号' integral-error-xx.log integral-error-xx.log|awk -F ' ' '{print $1}'|awk -F '.' 'BEGIN {count=0;print "次数:"}  {if($3>"13:00:00"){count+=1}}  END {print count}'

  • 相关阅读:
    编译nginx增加fair模块
    使用CentOS8来部署php7.4
    通过PHP代码将大量数据插入到Sqlite3
    不同程序语言处理加密算法的性能对比(PHP/Golang/NodeJS)
    CentOS8更换国内YUM源
    MySQL获取上月第一天、上月最后日、本月第一天、本月最后日的方法
    GO
    Go-数据类型以及变量,常量,函数,包的使用
    GO语言介绍以及开发环境配置
    利用python代码操作git
  • 原文地址:https://www.cnblogs.com/rocky-fang/p/8342261.html
Copyright © 2020-2023  润新知