免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 3987 | 回复: 24
打印 上一主题 下一主题

[文本处理] 请大神给叠加个awk代码,感谢! [复制链接]

论坛徽章:
31
程序设计版块每日发帖之星
日期:2016-02-06 06:20:00程序设计版块每日发帖之星
日期:2016-07-20 06:20:00程序设计版块每日发帖之星
日期:2016-07-26 06:20:00每日论坛发贴之星
日期:2016-07-26 06:20:00程序设计版块每日发帖之星
日期:2016-07-27 06:20:00每日论坛发贴之星
日期:2016-07-27 06:20:00程序设计版块每日发帖之星
日期:2016-07-28 06:20:00程序设计版块每日发帖之星
日期:2016-07-29 06:20:00程序设计版块每日发帖之星
日期:2016-08-02 06:20:00程序设计版块每日发帖之星
日期:2016-08-06 06:20:00程序设计版块每日发帖之星
日期:2016-08-08 06:20:00程序设计版块每日发帖之星
日期:2016-08-09 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-04-15 19:54 |只看该作者 |倒序浏览
求大神继续帮助


以前从下面(源文档)第二域IP地址中,提取出来的数值及按要处理这些数值的代码如下:
  1. 1
  2. 1
  3. 1
  4. 1
  5. 1
  6. 1
  7. 1
  8. 4
  9. 4
  10. 4
  11. 4
  12. 5
  13. 6
  14. 20
  15. 88
  16. 91
  17. 92
  18. 92
  19. 93
  20. 93
  21. 93
  22. 195
  23. 195
复制代码
  1. awk '{ a[length($0)][$0]++ }END{ for(i=1;i<=length(a);i++){n=0;for(j in a[i]){if(a[i][j]>=6)print j RS j RS;else b[i][++n]=j}}for(i=1;i<=length(a);i++){print b[i][1] RS b[i][length(b[i])] RS}}'
复制代码
上面代码运行后的结果是:
  1. 1
  2. 1

  3. 4
  4. 6

  5. 20
  6. 93

  7. 195
  8. 195
复制代码
本次再次来,求助叠加代码:

源文档:
  1. 6.1.0.3
  2. 6.1.1.4
  3. 6.1.2.5
  4. 6.1.3.6
  5. 6.1.7.8
  6. 6.1.8.9
  7. 6.1.9.4
  8. 13.4.1.2
  9. 13.4.2.3
  10. 13.4.3.4
  11. 13.4.4.5
  12. 13.5.5.6
  13. 13.6.7.8
  14. 121.20.1.2
  15. 121.88.2.3
  16. 121.91.3.4
  17. 121.92.4.5
  18. 121.92.5.6
  19. 121.93.6.7
  20. 121.93.7.8
  21. 121.93.8.9
  22. 136.195.1.2
  23. 136.195.2.3
复制代码
要求:
1、第一域数值必须相同才能分在一组中。
2、可以看出来,第二域的数值和最上面给出来的数值相同。


请大神给出个叠加代码,最终处理(按第二域数值)IP地址代码结果是(用空行分组):
  1. 6.1.0.3
  2. 6.1.9.4

  3. 13.4.1.2
  4. 13.6.7.8

  5. 121.20.1.2
  6. 121.93.8.9

  7. 136.195.1.2
  8. 136.195.2.3
复制代码
辛苦了,谢谢!



论坛徽章:
31
程序设计版块每日发帖之星
日期:2016-02-06 06:20:00程序设计版块每日发帖之星
日期:2016-07-20 06:20:00程序设计版块每日发帖之星
日期:2016-07-26 06:20:00每日论坛发贴之星
日期:2016-07-26 06:20:00程序设计版块每日发帖之星
日期:2016-07-27 06:20:00每日论坛发贴之星
日期:2016-07-27 06:20:00程序设计版块每日发帖之星
日期:2016-07-28 06:20:00程序设计版块每日发帖之星
日期:2016-07-29 06:20:00程序设计版块每日发帖之星
日期:2016-08-02 06:20:00程序设计版块每日发帖之星
日期:2016-08-06 06:20:00程序设计版块每日发帖之星
日期:2016-08-08 06:20:00程序设计版块每日发帖之星
日期:2016-08-09 06:20:00
2 [报告]
发表于 2016-04-15 19:55 |只看该作者
本帖最后由 bmne 于 2016-04-17 09:07 编辑

看明白应该是没问题吧?看不明白请回个话,谢谢


求助的问题解释很简单:

就是,在保证第一域数值相同的前提下,把第二域的数值用1楼的代码给运行起来即可




论坛徽章:
31
程序设计版块每日发帖之星
日期:2016-02-06 06:20:00程序设计版块每日发帖之星
日期:2016-07-20 06:20:00程序设计版块每日发帖之星
日期:2016-07-26 06:20:00每日论坛发贴之星
日期:2016-07-26 06:20:00程序设计版块每日发帖之星
日期:2016-07-27 06:20:00每日论坛发贴之星
日期:2016-07-27 06:20:00程序设计版块每日发帖之星
日期:2016-07-28 06:20:00程序设计版块每日发帖之星
日期:2016-07-29 06:20:00程序设计版块每日发帖之星
日期:2016-08-02 06:20:00程序设计版块每日发帖之星
日期:2016-08-06 06:20:00程序设计版块每日发帖之星
日期:2016-08-08 06:20:00程序设计版块每日发帖之星
日期:2016-08-09 06:20:00
3 [报告]
发表于 2016-04-16 08:40 |只看该作者
本帖最后由 bmne 于 2016-04-16 17:52 编辑

请大神出手帮助 1# elu_ligao                   请大神若有时间继续帮助 1# moperyblue


超级大神,辛苦、辛苦了!



为什么呼唤这两位大神?因为
上面的代码是 moperyblue  大神的,超厉害!
elu_ligao大神更是厉害,人品超级棒



求职 : 技术支持/维
论坛徽章:
0
4 [报告]
发表于 2016-04-16 08:58 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
31
程序设计版块每日发帖之星
日期:2016-02-06 06:20:00程序设计版块每日发帖之星
日期:2016-07-20 06:20:00程序设计版块每日发帖之星
日期:2016-07-26 06:20:00每日论坛发贴之星
日期:2016-07-26 06:20:00程序设计版块每日发帖之星
日期:2016-07-27 06:20:00每日论坛发贴之星
日期:2016-07-27 06:20:00程序设计版块每日发帖之星
日期:2016-07-28 06:20:00程序设计版块每日发帖之星
日期:2016-07-29 06:20:00程序设计版块每日发帖之星
日期:2016-08-02 06:20:00程序设计版块每日发帖之星
日期:2016-08-06 06:20:00程序设计版块每日发帖之星
日期:2016-08-08 06:20:00程序设计版块每日发帖之星
日期:2016-08-09 06:20:00
5 [报告]
发表于 2016-04-16 09:45 |只看该作者
本帖最后由 bmne 于 2016-04-16 09:55 编辑

回复 4# 99超人



谢谢大神,辛苦你了    (没想到休息日还有大神来,高兴中

数据运行正确



另外,不单独开贴求助了,麻烦你给我两个代码吧,搜索学习了很长时间,确实没找到

1、只删除第一行空行及末尾空行 (可能包括其中有tab)
     (只删除第一行空行)
       1
       2      
     (只删除末尾空行)

2、奇数行下面插入空行
      1
     (插入空行)
      2
      3
    (插入空行)
      4


麻烦大神一下吧




   

论坛徽章:
31
程序设计版块每日发帖之星
日期:2016-02-06 06:20:00程序设计版块每日发帖之星
日期:2016-07-20 06:20:00程序设计版块每日发帖之星
日期:2016-07-26 06:20:00每日论坛发贴之星
日期:2016-07-26 06:20:00程序设计版块每日发帖之星
日期:2016-07-27 06:20:00每日论坛发贴之星
日期:2016-07-27 06:20:00程序设计版块每日发帖之星
日期:2016-07-28 06:20:00程序设计版块每日发帖之星
日期:2016-07-29 06:20:00程序设计版块每日发帖之星
日期:2016-08-02 06:20:00程序设计版块每日发帖之星
日期:2016-08-06 06:20:00程序设计版块每日发帖之星
日期:2016-08-08 06:20:00程序设计版块每日发帖之星
日期:2016-08-09 06:20:00
6 [报告]
发表于 2016-04-16 10:19 |只看该作者
本帖最后由 bmne 于 2016-04-17 09:13 编辑

回复 4# 99超人


大神好
  1. awk -F'.' '!b[$1]++{print a[k]"\n";print;}{a[$1]=$0;k=$1}END{print a[k]}'
复制代码
实战中,你的这个代码没有达到我的要求
(问题出在:请你看看我1楼提供的代码,必须要那样处理第二域的数值才可以的,换句话说就是,你的代码没有把第二域的数值用1楼的代码给运行)


谢谢,辛苦你了




   

论坛徽章:
10
天蝎座
日期:2013-09-22 22:32:23程序设计版块每日发帖之星
日期:2016-08-07 06:20:00lufei
日期:2016-06-17 17:38:40程序设计版块每日发帖之星
日期:2016-06-12 06:20:002016科比退役纪念章
日期:2016-05-31 15:47:20CU十四周年纪念徽章
日期:2016-05-27 12:24:562015年亚洲杯之阿曼
日期:2015-05-03 21:01:352015年辞旧岁徽章
日期:2015-03-03 16:54:15天蝎座
日期:2013-10-20 21:05:24程序设计版块每日发帖之星
日期:2016-08-11 06:20:00
7 [报告]
发表于 2016-04-16 10:21 |只看该作者
回复 5# bmne
  1. sed '1{/[[:space:]]/d};${/[[:space:]]/d}' myfile
复制代码
  1. sed '1~2{s/$/\n/}' myfile
复制代码

论坛徽章:
31
程序设计版块每日发帖之星
日期:2016-02-06 06:20:00程序设计版块每日发帖之星
日期:2016-07-20 06:20:00程序设计版块每日发帖之星
日期:2016-07-26 06:20:00每日论坛发贴之星
日期:2016-07-26 06:20:00程序设计版块每日发帖之星
日期:2016-07-27 06:20:00每日论坛发贴之星
日期:2016-07-27 06:20:00程序设计版块每日发帖之星
日期:2016-07-28 06:20:00程序设计版块每日发帖之星
日期:2016-07-29 06:20:00程序设计版块每日发帖之星
日期:2016-08-02 06:20:00程序设计版块每日发帖之星
日期:2016-08-06 06:20:00程序设计版块每日发帖之星
日期:2016-08-08 06:20:00程序设计版块每日发帖之星
日期:2016-08-09 06:20:00
8 [报告]
发表于 2016-04-16 10:23 |只看该作者
回复 7# liion631818



大神来了,感谢感谢

请抽空帮我看看1楼的吧,辛苦




   

论坛徽章:
31
程序设计版块每日发帖之星
日期:2016-02-06 06:20:00程序设计版块每日发帖之星
日期:2016-07-20 06:20:00程序设计版块每日发帖之星
日期:2016-07-26 06:20:00每日论坛发贴之星
日期:2016-07-26 06:20:00程序设计版块每日发帖之星
日期:2016-07-27 06:20:00每日论坛发贴之星
日期:2016-07-27 06:20:00程序设计版块每日发帖之星
日期:2016-07-28 06:20:00程序设计版块每日发帖之星
日期:2016-07-29 06:20:00程序设计版块每日发帖之星
日期:2016-08-02 06:20:00程序设计版块每日发帖之星
日期:2016-08-06 06:20:00程序设计版块每日发帖之星
日期:2016-08-08 06:20:00程序设计版块每日发帖之星
日期:2016-08-09 06:20:00
9 [报告]
发表于 2016-04-16 10:59 |只看该作者
回复 7# liion631818


大神,请看一下,你的第一个代码,只删除第一行及尾行空行,好像不正确。第二个你的对

   

论坛徽章:
10
天蝎座
日期:2013-09-22 22:32:23程序设计版块每日发帖之星
日期:2016-08-07 06:20:00lufei
日期:2016-06-17 17:38:40程序设计版块每日发帖之星
日期:2016-06-12 06:20:002016科比退役纪念章
日期:2016-05-31 15:47:20CU十四周年纪念徽章
日期:2016-05-27 12:24:562015年亚洲杯之阿曼
日期:2015-05-03 21:01:352015年辞旧岁徽章
日期:2015-03-03 16:54:15天蝎座
日期:2013-10-20 21:05:24程序设计版块每日发帖之星
日期:2016-08-11 06:20:00
10 [报告]
发表于 2016-04-16 11:36 |只看该作者
回复 9# bmne


   
1、只删除第一行空行及末尾空行 (可能包括其中有tab)
     (只删除第一行空行)
       1
       2      
     (只删除末尾空行)


不是要求删除第一和末尾空行吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP