LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1926|回复: 7

如何求列最大值?

[复制链接]
发表于 2003-3-26 12:26:54 | 显示全部楼层 |阅读模式
除了逐行比较,还有什么办法么?
3q
有没有现成的sh
发表于 2003-3-26 12:32:57 | 显示全部楼层
有没有现成的sh
现成的没有!DIY如何? ;)
 楼主| 发表于 2003-3-26 15:28:41 | 显示全部楼层
这样好像也可以,不过应该还有其他方法的,没想到

1,awk 单列
2,sort -g file >newfile
3,tail -1 newfile

这样应该比逐行比较快吧
发表于 2003-3-26 17:35:21 | 显示全部楼层
在命令行下,用笨方法也能实现!
  1. 1,将文件的所有列的数值存入数组,
  2. javalee//home/javalee/lx>arg=$(chf|awk '{print $1}'|sort -n)                #建立数组
  3. javalee//home/javalee/lx>echo ${arg[*]}
  4. 1 2 3 4 5 6 7 8 9        #排序后的数组内容
  5. 2,用rev和awk找出最大值
  6. javalee//home/javalee/lx>echo ${arg[*]}|rev|awk '{print $1}'
  7. [color=blue]9[/color]
  8. javalee//home/javalee/lx>
复制代码
不知道行不?;)
发表于 2003-3-26 18:41:56 | 显示全部楼层
反复作了几个实验,感觉有些问题! SORRY~~再研究研究 ;)
发表于 2003-3-26 22:06:04 | 显示全部楼层
SORRY~~我有些草率~~
解决啦~,用命令行解决!
举例:
  1. 求tmp文件中第一列中最大值,tmp文件如下:
  2. javalee//home/javalee/lx>cat tmp
  3. 12      343
  4. 534     3445
  5. 4       34
  6. 7765    3
  7. 44      5
  8. 9       9
  9. 3       59
  10. 845     576
  11. 2589    45
  12. 35      9.9
  13. 8i      123
  14. 3       3
  15. 2       3576
  16. 3       856
  17. 4       5
  18. javalee//home/javalee/lx>cat tmp|awk '{print $1}'|sort -n|sed -n '$p'        #执行
  19. [color=red]7765[/color]        #结果
复制代码
思路:用awk取tmp第一列数据,用sort排序之后(由小到大),用sed显示末行(即排序后最大的数值)
也许这样麻烦些,相信有更好的方法!
 楼主| 发表于 2003-3-27 09:22:14 | 显示全部楼层
3q 斑竹
$p 代表最后一行?,是不是保留字符来的?哪里还有相关详细说明?
发表于 2003-3-27 10:52:45 | 显示全部楼层
$在 sed 里表示最后一行.见置顶关于sed的说明 ;)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表