免费注册 查看新帖 |

Chinaunix

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

[文本处理] 关于提取字段对比 [复制链接]

论坛徽章:
1
子鼠
日期:2013-11-26 22:29:42
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-11-18 18:55 |只看该作者 |倒序浏览
原始文本如下:
GPB       active   attached       idle     unstable   total               replica        
---------------------------------------------------------------------------------
1.10.2.1  2142     3346       10054    59         15601 (  4.0 %) 5211  (  3.7 %)
1.12.2.1  2123     3405       10139    45         15712 (  4.0 %) 5374  (  3.8 %)
1.13.2.1  2019     3176       9622     48         14865 (  3.8 %) 5564  (  3.9 %)
1.14.2.1  2047     3224       9695     52         15018 (  3.8 %) 5562  (  3.9 %)
1.15.2.1  2022     3171       9745     59         14997 (  3.8 %) 5929  (  4.2 %)
1.16.2.1  2113     3093       9504     53         14763 (  3.7 %) 5966  (  4.2 %)
1.8.2.1   2029     3257       9642     64         14992 (  3.8 %) 5885  (  4.1 %)
1.9.2.1   2031     3178       9652     52         14913 (  3.8 %) 5806  (  4.1 %)
2.12.2.1  2061     3162       8038     65         13326 (  3.4 %) 5284  (  3.7 %)
2.13.2.1  2086     3299       8562     49         13996 (  3.6 %) 5390  (  3.8 %)
2.14.2.1  2097     3360       8707     54         14218 (  3.6 %) 5227  (  3.7 %)
2.15.2.1  2152     3343       10071    50         15616 (  4.0 %) 5536  (  3.9 %)
2.16.2.1  2079     3424       10104    62         15669 (  4.0 %) 5516  (  3.9 %)
2.17.2.1  2157     3474       10081    53         15765 (  4.0 %) 5679  (  4.0 %)
2.18.2.1  2138     3487       10103    54         15782 (  4.0 %) 5557  (  3.9 %)
2.19.2.1  2106     3426       10176    61         15769 (  4.0 %) 5588  (  3.9 %)
2.20.2.1  2141     3440       10042    50         15673 (  4.0 %) 5234  (  3.7 %)
3.10.2.1  2096     3408       10168    53         15725 (  4.0 %) 5274  (  3.7 %)
3.11.2.1  2170     3374       8212     60         13816 (  3.5 %) 5656  (  4.0 %)
3.12.2.1  1920     3156       8076     64         13216 (  3.4 %) 5725  (  4.0 %)
3.13.2.1  2086     3365       10084    60         15595 (  4.0 %) 5196  (  3.6 %)
3.14.2.1  2154     3483       10181    52         15870 (  4.0 %) 5192  (  3.6 %)
3.15.2.1  2145     3457       10148    59         15809 (  4.0 %) 5263  (  3.7 %)
3.16.2.1  2151     3443       10273    49         15916 (  12.0 %) 5361  (  3.8 %)
3.17.2.1  2201     3427       10110    42         15780 (  4.0 %) 5275  (  3.7 %)
3.19.2.1  2157     3425       10103    48         15733 (  4.0 %) 5322  (  3.7 %)

想取出total这一列的值
4.0 %
4.0 %
3.8 %
3.8 %
3.8 %
3.7 %
3.8 %
3.8 %
3.4 %
3.6 %
3.6 %
4.0 %
4.0 %
4.0 %
4.0 %
4.0 %
4.0 %
4.0 %
3.5 %
3.4 %
4.0 %
4.0 %
4.0 %
12.0 %
4.0 %
4.0 %

然后自动求出其平均值,average为4.16%

最后想让脚本列出与平均值相差1%的列,如0.0%    如12.0%
输出的形式如:
3.16.2.1  2151     3443       10273    49         15916 (  12.0 %) 5361  (  3.8 %)




想请教下大家,这个脚本用AWK可以写吗,谢谢了

论坛徽章:
39
辰龙
日期:2013-08-21 15:45:192015亚冠之广州富力
日期:2015-05-12 16:34:52亥猪
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17双鱼座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:0815-16赛季CBA联赛之吉林
日期:2017-06-24 16:43:52
2 [报告]
发表于 2013-11-18 19:18 |只看该作者
本帖最后由 关阴月飞 于 2013-11-18 19:22 编辑

回复 1# 零下五度_


先算出 第8列的平均值,然后打印出 第8列 大于平均值的行:
  1. awk 'NF>7{a[++n]=$0;b[n]=$8;s+=$8}END{for(i=0;i++<n;)if(b[i]>s/n)print a[i]}' file
复制代码

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
3 [报告]
发表于 2013-11-19 14:48 |只看该作者
@零下五度_@关阴月飞

想让脚本列出与平均值相差大于1%的列
  1. awk 'NR>2{a[++n]=$0;b[n]=$8;s+=$8}
  2. END{ave=s/n;for (i=1;i<=n;i++) {if (sqrt((b[i]-ave)*(b[i]-ave))>1) print a[i]}}' infile
复制代码

论坛徽章:
39
辰龙
日期:2013-08-21 15:45:192015亚冠之广州富力
日期:2015-05-12 16:34:52亥猪
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17双鱼座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:0815-16赛季CBA联赛之吉林
日期:2017-06-24 16:43:52
4 [报告]
发表于 2013-11-19 15:20 |只看该作者
本帖最后由 关阴月飞 于 2013-11-19 15:21 编辑

回复 3# rdcwayx


      确实是这样,sqrt 用得妙,学习了


论坛徽章:
5
白羊座
日期:2014-10-28 11:23:27水瓶座
日期:2015-01-20 10:19:022015亚冠之柏斯波利斯
日期:2015-07-11 18:17:2015-16赛季CBA联赛之同曦
日期:2015-12-23 12:38:582016猴年福章徽章
日期:2016-02-18 15:30:34
5 [报告]
发表于 2013-11-19 18:07 |只看该作者
本帖最后由 klainogn 于 2013-11-19 18:14 编辑
  1. $ awk 'NF>7&&NR==FNR{++l;s+=$8;next}{avg=s/l}sqrt(($8-avg)*($8>avg))>1' file file
  2. 3.16.2.1  2151     3443       10273    49         15916 (  12.0 %) 5361  (  3.8%)
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP