awk 二次分割字符

【需求】

   ...|fieldA=11|fieldB=12|fieldC=13|time=14|...

   ...|fieldA=21|time=22|fieldB=23|fieldC=24|...

  把 time=## 中,时间满足一定条件的,找出来(如小于5、小于4等等)

注意,其中time列的位置 不是固定的

    $cat  99.txt

2012-01-13 00:00:22 +766 [INFO] [a02f0b90][src/service.c::3217]>> 2011 ok|time=1|ret=0|uNum=8613711167096|nRuleId=13|sRecDate=20120113|nMultiple=1|nClientId=486539264|nExtClientId=1426784256
2012-01-13 00:00:22 +766 [INFO] [a02f0b90][src/service.c::3217]>> 2011 ok|time=2|ret=0|uNum=8613711167096|nRuleId=13|sRecDate=20120113|nMultiple=1|nClientId=486539264|nExtClientId=1426784256
2012-01-13 00:00:26 +646 [INFO] [a0cf1b90][src/service.c::1102]>>
call_pro_modify_name time|uNum=15280360794|ret=0|time=3
2012-01-13 00:00:22 +766 [INFO] [a02f0b90][src/service.c::3217]>> 2011 ok|time=4|ret=0|uNum=8613711167096|nRuleId=13|sRecDate=20120113|nMultiple=1|nClientId=486539264|nExtClientId=1426784256
2012-01-13 00:00:26 +646 [INFO] [a0cf1b90][src/service.c::1102]>> call_pro_modify_name time|uNum=15280360794|ret=0|time=5


【很精准的办法】

第一步先用 -F参数,分隔符为竖线 '|'

第二步,轮询每个列,用 split 函数分割字段,分隔符为等号 "=";此时"="左边的为time,该列就是time列,只要再判断 time列中时间值,即可

awk -F '|' '{for (i=1;i<=NF;i++) {split( $i, array, "="); if(  array[1]== "time" && array[2] < 6 )print $0}}'  99.txt


【举例】

[zhoushx@app2linux04 ~]$ awk -F '|' '{for (i=1;i<=NF;i++) {split( $i, array, "="); if(  array[1]== "time" && array[2] < 6 )print $0}}'  99.txt  | wc
      5      30     751

[zhoushx@app2linux04 ~]$ awk -F '|' '{for (i=1;i<=NF;i++) {split( $i, array, "="); if(  array[1]== "time" && array[2] < 5 )print $0}}'  99.txt  | wc
      4      23     629


[zhoushx@app2linux04 ~]$ awk -F '|' '{for (i=1;i<=NF;i++) {split( $i, array, "="); if(  array[1]== "time" && array[2] < 4 )print $0}}'  99.txt  | wc
      3      16     438


[zhoushx@app2linux04 ~]$ awk -F '|' '{for (i=1;i<=NF;i++) {split( $i, array, "="); if(  array[1]== "time" && array[2] < 3 )print $0}}'  99.txt  | wc
      2      14     382


[zhoushx@app2linux04 ~]$ awk -F '|' '{for (i=1;i<=NF;i++) {split( $i, array, "="); if(  array[1]== "time" && array[2] < 2 )print $0}}'  99.txt  | wc
      1       7     191



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值