免费注册 查看新帖 |

Chinaunix

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

[文本处理] 怎么对文本中的数字进行分组然后运算 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-06-25 09:30 |只看该作者 |倒序浏览
比如在a文件中有1 2 4 5 6 13 141 3 11 13 44 11 这12个数,我以5个为一组,进行一种运算得到一个数,最后2个数为一组,然后将得到的3个数进行求平均数的运算。

论坛徽章:
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
2 [报告]
发表于 2014-06-25 09:32 |只看该作者
回复 1# wpd0508
一种运算指?
+-*/?或其他更复杂的运算或某个已实现好的函数f()?
   

论坛徽章:
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
3 [报告]
发表于 2014-06-25 09:37 |只看该作者
1.文件中的数字是一行一个吗?
2.五个一组做什么运算?

论坛徽章:
0
4 [报告]
发表于 2014-06-25 09:41 |只看该作者
不是一行一个,是和正常的文一样以空格为分隔符,
运算的话就是
awk '{
        a[NR] = $1
        s += $1
}
END{
        n =NR
        avg = s / n
        for(x=1; x<=n; x++)
        {
                y = a[x] - avg
                sx += x
                sy += y
                sxy += x * y
                sx2 += x * x
        }
        a0 = (sx2 * sy - sx * sxy) / (n * sx2 - sx * sx)
        a1 = (n * sxy - sx * sy) / (n * sx2 - sx * sx)
        printf "y = %s + %sx\n" ,a0 ,a1
}' test4回复 3# 关阴月飞


   

论坛徽章:
0
5 [报告]
发表于 2014-06-25 09:46 |只看该作者
E = sqrt( sum (Yi - (a1*x+a0) )^2)最后每5个数得到一个E 然后进行求E的平均数运算

论坛徽章:
0
6 [报告]
发表于 2014-06-25 10:03 |只看该作者

echo "1 2 4 5 6 13 141 3 11 13 44 11" | xargs -n 5 | 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
7 [报告]
发表于 2014-06-25 10:03 |只看该作者
回复 4# wpd0508
    不是一行一个,是和正常的文一样以空格为分隔符,
运算的话就是
awk '{
        a[NR] = $1
        s += $1
}
END{
        n =NR
        avg = s / n
        for(x=1; x<=n; x++)
        {
                y = a[x] - avg
                sx += x
                sy += y
                sxy += x * y
                sx2 += x * x
        }
        a0 = (sx2 * sy - sx * sxy) / (n * sx2 - sx * sx)
        a1 = (n * sxy - sx * sy) / (n * sx2 - sx * sx)
        printf "y = %s + %sx\n" ,a0 ,a1
}' test4

意思是只要把五个数传给这个处理程序就好了是吗?

那只要把后面的test4文件处理一下:
xargs -n5 test4 |awk 'xxoo'

论坛徽章:
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
8 [报告]
发表于 2014-06-25 10:04 |只看该作者
本帖最后由 Herowinter 于 2014-06-25 10:06 编辑

回复 5# wpd0508
你上面写的那程序应该是论坛一个大神帮你实现的用
最小2乘法求线性关系y=a1*x+a0的两个系数a0,a1,
但你现在没封装成函数,怎么调用?另外,
数学基础不好,你现在这个求E的公式中Yi,x分别表示
什么具体数据?

   

论坛徽章:
36
摩羯座
日期:2013-09-23 16:37:312015年亚洲杯之沙特阿拉伯
日期:2015-04-14 09:10:172015亚冠之柏太阳神
日期:2015-06-25 08:48:212015亚冠之武里南联
日期:2015-07-28 09:01:082015亚冠之莱赫维亚
日期:2015-07-28 15:44:172015亚冠之柏斯波利斯
日期:2015-09-06 14:08:52白银圣斗士
日期:2015-11-25 17:06:2815-16赛季CBA联赛之吉林
日期:2015-12-09 16:59:072016猴年福章徽章
日期:2016-02-18 15:30:3415-16赛季CBA联赛之辽宁
日期:2016-04-14 09:29:04luobin
日期:2016-06-17 17:46:3615-16赛季CBA联赛之天津
日期:2016-08-16 14:11:01
9 [报告]
发表于 2014-06-25 10:05 |只看该作者
回复 8# Herowinter
你的积分也这么嗨皮了

   

论坛徽章:
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
10 [报告]
发表于 2014-06-25 10:08 |只看该作者
回复 9# LikeLx
必须的,世界杯期间不瘦身怎么跟得上节奏?

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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP