免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: Auroracxy
打印 上一主题 下一主题

[文本处理] 工作中遇到个文本处理求助,awk [复制链接]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
21 [报告]
发表于 2014-08-27 18:05 |只看该作者
本帖最后由 Auroracxy 于 2014-08-27 18:05 编辑

回复 13# chengchow


    顺着你的思路我改动了一下,看似能满足我自己的条件了
awk 'BEGIN{FS=OFS="|"}{a[$2$3$4]=$1;c[$2$3$4]=$5;if(b[$2$3$4]==""){print $0};if(a[$2$3$4]>=b[$2$3$4]+60000 && b[$2$3$4]!=""){x=$1;y=$5;$5=10;$1=b[$2$3$4]+10000;print $0;$1=x;$5=y;print $0};if(c[$2$3$4]!=d[$2$3$4] && a[$2$3$4]<b[$2$3$4]+60000 && d[$2$3$4]!=""){print $0};b[$2$3$4]=a[$2$3$4];d[$2$3$4]=c[$2$3$4]}'  file



yestreenstars兄写的我还没看懂。。

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
22 [报告]
发表于 2014-08-27 18:05 |只看该作者
本帖最后由 blackold 于 2014-08-27 18:08 编辑

回复 17# Auroracxy
  1. awk -F \| '{if($2"|"$3"|"$4!=pid) print;else{if($1-pt>=60000){print pt+10000"|"pid"|"10;ps=10;}if($5!=ps)print;}pt=$1;ps=$5;pid=$2"|"$3"|"$4}' urfile
复制代码

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
23 [报告]
发表于 2014-08-27 19:17 |只看该作者
  1. awk 'BEGIN{FS=OFS="|"}{y1=$2 FS $3 FS $4;if(!a[y1]++)print}NR>1{if(y1==y2){if($1-x<60000){if($5!=z)print}else{print x+10000,y1,10;print}}}{x=$1;y2=y1;z=$5}'
复制代码
回复 17# Auroracxy


   

论坛徽章:
780
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
24 [报告]
发表于 2014-08-27 22:36 |只看该作者
回复 10# yestreenstars

大神怎么突然少了好多积分?
您可是本版最接近富可敌国的大户啊。
   

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
25 [报告]
发表于 2014-08-27 23:51 |只看该作者
回复 23# Herowinter

今天拍了个东西,啊,西湖的水,我的泪~
   

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
26 [报告]
发表于 2014-08-28 08:29 |只看该作者
我看了三遍, 还是没有理解楼主到底要干嘛.

如果是只记录设备的状态变化, 并且是在1分钟以外的变化. 这个可以理解, 也容易处理. 只要简单的把相同行过滤掉就行了.

但如果超过1分钟, 就要插入一条log, 这个我实在无法理解. 以我的工作经验来说, log, 只能用于过滤, 不能后期修改. 否则, 结果就没人信了.

顺便说一下, 楼上各位都是大牛, 我看了半天, 我只能写个perl程序来处理这个问题, 而且, 还无法保证不会OOM.

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
27 [报告]
发表于 2014-08-28 11:02 |只看该作者
本帖最后由 blackold 于 2014-08-28 11:03 编辑

回复 17# Auroracxy


    把样本修改为:
     1  1409108810000|2090000199|869323003901382|adapt.a|0
     2  1409108870000|2090000199|869323003901382|adapt.a|0
     3  1409108880000|2090000199|869323003901382|adapt.a|1
     4  1409108890000|2090000199|869323003901382|adapt.a|1
     5  1409108900000|2090000199|869323003901382|adapt.a|1
     6  1409108910000|2090000199|869323003901382|adapt.a|0
     7  1409108810000|2090000199|860989025893705|adapt.b|0
     8  1409108820000|2090000199|860989025893705|adapt.b|1
     9  1409108830000|2090000199|860989025893705|adapt.b|0
    10  1409108940000|2090000199|860989025893705|adapt.b|1
    11  1409109100000|2090000199|860989025893705|adapt.b|0
    12  1409108960000|2090000199|860989025893705|adapt.b|0
    13  1409108970000|2090000199|860989025893705|adapt.b|9
    14  1409108820000|2090000199|868145019649338|adapt.c|9
    15  1409108830000|2090000199|868145019649338|adapt.c|9
    16  1409108940000|2090000199|868145019649338|adapt.c|0
    17  1409108940000|2090000199|868145019649338|adapt.d|0


也就是修改了第9行的status和第11行的时间戳:
9c9
< 1409108830000|2090000199|860989025893705|adapt.b|1
---
> 1409108830000|2090000199|860989025893705|adapt.b|0
11c11
< 1409108950000|2090000199|860989025893705|adapt.b|0
---
> 1409109100000|2090000199|860989025893705|adapt.b|0

有两种特殊情况:
>60秒的上边界同时也是状态变化的行
连续出现 > 60 秒的行。

这样第9行和第10行要输出两遍?

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
28 [报告]
发表于 2014-08-28 11:50 |只看该作者
回复 26# blackold


    感谢回复, 昨天我也发现到这个问题,我把需求改了,应该可以避免这种情况

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
29 [报告]
发表于 2014-08-28 11:52 |只看该作者
回复 25# q1208c


    这个其实是状态在一分钟没日志就说明掉线了,要插一条状态,领导的需求折磨人啊   

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
30 [报告]
发表于 2014-08-28 12:06 |只看该作者
回复 27# Auroracxy


    我是在你改需求之后才发的贴。

   你的新需求也没涉及这种特殊情况吧。

   对于新的样本,输出什么? 注意8-11行
    1  1409108810000|2090000199|869323003901382|adapt.a|0
     2  1409108820000|2090000199|869323003901382|adapt.a|10
     3  1409108870000|2090000199|869323003901382|adapt.a|0
     4  1409108880000|2090000199|869323003901382|adapt.a|1
     5  1409108910000|2090000199|869323003901382|adapt.a|0
     6  1409108810000|2090000199|860989025893705|adapt.b|0
     7  1409108820000|2090000199|860989025893705|adapt.b|1
     8  1409108830000|2090000199|860989025893705|adapt.b|0
     9  1409108840000|2090000199|860989025893705|adapt.b|10
    10  1409108940000|2090000199|860989025893705|adapt.b|1
    11  1409108950000|2090000199|860989025893705|adapt.b|10
    12  1409109100000|2090000199|860989025893705|adapt.b|0
    13  1409108970000|2090000199|860989025893705|adapt.b|9
    14  1409108820000|2090000199|868145019649338|adapt.c|9
    15  1409108840000|2090000199|868145019649338|adapt.c|10
    16  1409108940000|2090000199|868145019649338|adapt.c|0

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP