免费注册 查看新帖 |

Chinaunix

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

如何用awk来找最大值??? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-07-27 12:25 |只看该作者 |倒序浏览
Symbol,Date,Open,High,Low,Close,Volume,OpenInt
AAB,27-Jun-2008,0.66,0.68,0.63,0.66,95700
AAB.WT,27-Jun-2008,0.18,0.18,0.18,0.18,28000
AAH,27-Jun-2008,22.84,23.32,22.17,23.15,80019
AB,27-Jun-2008,5,5,5,5,100
ABG,27-Jun-2008,2.43,2.45,2.41,2.42,6600
ABH,27-Jun-2008,9.96,10,9.41,9.6,43829
ABO.A,27-Jun-2008,25.2,26.99,25.2,26.99,800
ABO.B,27-Jun-2008,26.03,27,26.03,27,620
ABT,27-Jun-2008,10.3,10.49,10.3,10.41,149482
ABX,27-Jun-2008,44,46.31,43.96,45.74,5257939
AC.A,27-Jun-2008,8.49,8.59,7.96,8.18,67537
AC.B,27-Jun-2008,8.38,8.68,8,8.11,47052
ACC,27-Jun-2008,6.21,6.21,6.01,6.01,2388


如果知道上面的这个一组数据,如何才能把close,$6所对应的这一竖行中的最大值和最小值找到呢???
我现在所知道的就是awk -F","先把分割点确定了
老师给了提示说,先选定AAB的中的最大值和最小值,然后用下面的来比较
如果下面的大于之前的,或小于之前的,就用新得到的数据
这样的话,是不是就给用loop了呀???

哎,现在实在是迷糊呀,希望有谁能提供些帮助
在此先谢过了

论坛徽章:
0
2 [报告]
发表于 2008-07-27 12:52 |只看该作者
$awk -F, 'BEGIN{ max=0; } {print $5;if( NR!=1 && $5>max ) max=$5 }END{ printf"max is %d.\n",max}' file

论坛徽章:
0
3 [报告]
发表于 2008-07-27 12:56 |只看该作者
原帖由 爱知 于 2008-7-27 12:52 发表
$awk -F, 'BEGIN{ max=0; } {print $5;if( NR!=1 && $5>max ) max=$5 }END{ printf"max is %d.\n",max}' file



不知道这位兄弟可否解释一下,大概说说就好
我刚开始学awk,有些东西还有些困惑
多谢了

论坛徽章:
0
4 [报告]
发表于 2008-07-27 13:06 |只看该作者
NR不等于1并且第五列大于max变量,那么就把第五列赋值给max,其实就是普通的编程,这个是我不学awk的原因之一。

论坛徽章:
0
5 [报告]
发表于 2008-07-27 13:16 |只看该作者
BEGIN{ max=0; }                   开始设置变量max
print $5                           打印出第五列
if( NR!=1 && $5>max ) max=$5     除第一行外,用第五域与max比较,若大于max,则修改max的值
END{ printf"max is %d.\n",max}    最后打印出max的值

不用loop,因为grep,sed,awk都是先对行进行扫描,然后进行操作

http://bbs.chinaunix.net/viewthread.php?tid=448687

论坛徽章:
0
6 [报告]
发表于 2008-07-27 13:21 |只看该作者
原帖由 walkerxk 于 2008-7-27 13:06 发表
其实就是普通的编程,这个是我不学awk的原因之一。

walkerxk兄
其实awk的功能很强大的,而且与c语言相似,容易上手,为什么不学而为我所用呢?

还有其他原因?
。。。

论坛徽章:
0
7 [报告]
发表于 2008-07-27 13:28 |只看该作者
原帖由 爱知 于 2008-7-27 13:21 发表

walkerxk兄
其实awk的功能很强大的,而且与c语言相似,容易上手,为什么不学而为我所用呢?

还有其他原因?
。。。

没感觉要用到awk,而且不喜欢C,其实我喜欢的是最早basic,解释性的,就像shell。可惜后来的VB还是变成了编译性的语言。

[ 本帖最后由 walkerxk 于 2008-7-27 13:42 编辑 ]

论坛徽章:
0
8 [报告]
发表于 2008-07-27 13:32 |只看该作者
我没有学过basic。
basic语法较简单些吧?
一行只一句吗?
有没有该语言编写的操作系统?

[ 本帖最后由 爱知 于 2008-7-27 13:34 编辑 ]

论坛徽章:
0
9 [报告]
发表于 2008-07-27 13:40 |只看该作者
原帖由 爱知 于 2008-7-27 13:32 发表
我没有学过basic。
basic语法较简单些吧?
一行只一句吗?

不是,可以多句,解释性语言和编译性语言的区别在于解释性语言可以一条一条执行,你可以执行一半,然后接下来一半半年后执行,但是编译性语言的话一定要编译后才能执行,一次必须执行完。
Perl教父Larry Wall曾经写过一篇文章rogramming is Hard, Let's Go Scripting...
http://www.perl.com/pub/a/2007/12/06/soto-11.html

论坛徽章:
0
10 [报告]
发表于 2008-07-27 13:42 |只看该作者
basic由于本身的缺点,不可能用来编写操作系统,office是VB编写的。
其实完全用C写操作系统也是不行的,必须要汇编的支持。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP