免费注册 查看新帖 |

Chinaunix

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

一个计算问题  关闭 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2002-12-14 15:21 |只看该作者

一个计算问题

我刚才就是这么做的,出来结果就这样

论坛徽章:
0
12 [报告]
发表于 2002-12-16 01:17 |只看该作者

一个计算问题


改成这样就可以了。
  1. awk '{print $2 }' test.txt | sort -u > ./1.txt.tmp
  2. while read keyword
  3. do
  4.   keyno=0
  5.   keyvalue=0
  6.   grep $keyword test.txt  > 2.txt.tmp
  7.   while read no nouse value
  8.   do
  9.     if [ $keyno -ge $no -o $keyno -eq 0 ]
  10.     then
  11.       keyno=$no
  12.     fi
  13.     keyvalue=`expr $keyvalue + $value`
  14.   done < 2.txt.tmp
  15.   echo "$keyno $keyword $keyvalue"
  16. done <1.txt.tmp
  17. rm -f ./[12].txt.tmp
复制代码

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
13 [报告]
发表于 2002-12-16 07:41 |只看该作者

一个计算问题

环境为PC SOLARIS 7。
上边的还是执行不了,俺看一下,原来在执行
awk '{print $2 }' test.txt | sort -u > ./1.txt.tmp 时,产生的文件 1.txt.tmp
的头两行为空格,导致脚本执行不好。俺把那行改一下,变为两行:
-------------------------------------------------
awk '{print $2 }' 1.txt | sort -u > ./1.txt.temp
grep -v &quot;^ *$&quot; 1.txt.temp > 1.txt.tmp
------------------------------------------------
执行正常:
------------------------------------------------
# ./sortnadd
0+1 aaa 3000
0+2 bbb 2000
0+5 ccc 1000
-----------------------------------------------
哪位高手指点一下,为何有空行?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
14 [报告]
发表于 2002-12-16 08:05 |只看该作者

一个计算问题

0+1 aaa 3000

0+1 啥子意思?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
15 [报告]
发表于 2002-12-16 08:19 |只看该作者

一个计算问题

楼上贴子作废啊,SORRY,我自己把自己骗了

论坛徽章:
0
16 [报告]
发表于 2002-12-16 08:40 |只看该作者

一个计算问题

楼上各位有考虑过如果原始数据量很大(比如5万条、50万条?)时执行效率的问题吗?
如果处理每个关键字都要扫描一下源文件的话似乎太慢了?
#!/bin/sh
sort +1 -2 test.txt > 1.txt
awk 'BEGIN{no=-1&#59;}{if (no==-1){no=$1&#59;k=$2&#59;tot=0&#59;} \
                   if (k==$2) {tot+=$3&#59;} \
                   else{printf &quot;%d %s %d\n&quot;, no,k,tot&#59; \
                        no=$1&#59; k=$2&#59; tot=$3&#59;} } \
     END{printf &quot;%d %s %d\n&quot;, no,k,tot&#59;}' 1.txt > output.txt
rm -f 1.txt

论坛徽章:
0
17 [报告]
发表于 2002-12-16 09:22 |只看该作者

一个计算问题

谢谢各位!

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
18 [报告]
发表于 2002-12-16 09:32 |只看该作者

一个计算问题

兄弟高见,

sort +1 -2 啥子意思?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
19 [报告]
发表于 2002-12-17 12:19 |只看该作者

一个计算问题

弟兄们,俺是新手,请指教则个!

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
20 [报告]
发表于 2002-12-18 04:42 |只看该作者

一个计算问题

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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP