免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3677 | 回复: 10

[文本处理] 求助!!!急!!awk上下行比较问题!! [复制链接]

论坛徽章:
0
发表于 2014-04-29 16:40 |显示全部楼层
测试数据:
MK000001        12840        p3-42
MK000001        12840        p3-44
MK000001        12840        p3-48
MK000001        12840        p3-6
MK000001        12846        p3-44
MK000061        255        p3-137
MK000061        255        p3-177
MK000061        256        p3-159
MK000069        4364        p3-119
MK000069        4365        p3-123
MK000069        4366        p3-156

需要“第二列”的上下行进行比较,在范围小于5之间 就将第3列排在后面。

结果:
MK000001        12840        p3-42 p3-44  p3-48 p3-6
MK000001        12846        p3-44
MK000061        255        p3-137 p3-177  p3-159
MK000069        4364        p3-119 p3-123 p3-156

先谢谢 大神们了!!

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
发表于 2014-04-29 16:48 |显示全部楼层
本帖最后由 jason680 于 2014-04-29 16:48 编辑

回复 1# xiayuu119

$ awk 'function abs(x){return x>0?x:-x}{if(abs(S2-$2)<=5){P=P" "$3}else{if(P)print P;P=$0;S2=$2}}END{print P}' FILE
MK000001        12840        p3-42 p3-44 p3-48 p3-6
MK000001        12846        p3-44
MK000061        255        p3-137 p3-177 p3-159
MK000069        4364        p3-119 p3-123 p3-156

   

论坛徽章:
0
发表于 2014-04-29 16:52 |显示全部楼层
jason680 发表于 2014-04-29 16:48
回复 1# xiayuu119

$ awk 'function abs(x){return x>0?x}{if(abs(S2-$2)



太感谢了!!!成功运行!

论坛徽章:
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
发表于 2014-04-29 17:05 |显示全部楼层
本帖最后由 blackold 于 2014-04-30 09:11 编辑

回复 1# xiayuu119

try:
  1. awk '{if(($2-p)^2<=25)r=r" "$3;else{if(NR>1)print r;r=$0}}{p=$2}END{print r}' urfile
复制代码
考虑第一列:
  1. awk '{if($1==p1&&($2-p2)^2<=25)r=r" "$3;else{if(NR>1)print r;r=$0}}{p1=$1;p2=$2}END{print r}' urfile
复制代码

论坛徽章:
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
发表于 2014-04-29 17:07 |显示全部楼层
MK000001        1        p3-42
MK000001        2        p3-44
MK000001        3        p3-48
MK000001        4        p3-6
MK000001        5        p3-44
MK000061        6        p3-137
MK000061        7        p3-177
MK000061        8        p3-159

这样数据也合并?

论坛徽章:
0
发表于 2014-04-29 18:08 |显示全部楼层
blackold 发表于 2014-04-29 17:07
MK000001        1        p3-42
MK000001        2        p3-44
MK000001        3        p3-48


哦~!还要考虑!第一列~!!!!~!

论坛徽章:
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
发表于 2014-04-29 19:17 |显示全部楼层
回复 6# xiayuu119


    那一楼的描述不准啊。

论坛徽章:
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
发表于 2014-04-30 00:32 |显示全部楼层
  1. awk 'function abs(x){return x>0?x:-x}{if($1==t1&&abs($2-t2)<5)s=s" "$3;else{if(s)print s;s=$0}t1=$1;t2=$2}END{print s}'
复制代码

论坛徽章:
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
发表于 2014-04-30 00:35 |显示全部楼层
回复 4# blackold

黑哥老马失蹄啊,小括号都用错了~
  1. awk '{if($1==p1&&($2-p2)^2<=25)r=r" "$3;else{if(NR>1)print r;r=$0}}{p1=$1;p2=$2}END{print r}'
复制代码

论坛徽章:
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
发表于 2014-04-30 09:11 |显示全部楼层
回复 9# yestreenstars


    谢谢指正!

    我数学没学学好。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP