免费注册 查看新帖 |

Chinaunix

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

[已解决] 请教关于AWK内的循环判断参数大小 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-06-05 21:35 |只看该作者 |倒序浏览
#/bin/bash

awk 'BEGIN{x='$1';for(i=1;i<='$#';$i++)if($i>x)x=$i}END{print x}'

我的想法是比较参数的大小,返回最大值,貌似行不通


像这样就可以,但是不知道弄成参数的形式怎么弄:
echo 1 3 8 7 4 6|awk '{x=$1}{for(i=1;i<=NF;i++)if($i>x)x=$i}END{print x}'




!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

非常感谢各位大虾,很佩服大家,努力学习ing!!

[ 本帖最后由 hidinga 于 2009-6-5 23:36 编辑 ]

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
2 [报告]
发表于 2009-06-05 22:02 |只看该作者

回复 #1 hidinga 的帖子

echo $@ | awk '{x=$1;for(i=1;i<=NF;i++)if($i>x)x=$i;print x}'

论坛徽章:
0
3 [报告]
发表于 2009-06-05 22:02 |只看该作者
  1. [root@mylinux tmp]# cat mysh
  2. #!/bin/bash
  3. echo $@ | awk '{for (i=1;i<=NF;i++) if ($i>max) max=$i}END{print max}'
  4. [root@mylinux tmp]# ./mysh 4 9 -1
  5. 9
复制代码

论坛徽章:
0
4 [报告]
发表于 2009-06-05 22:08 |只看该作者
跟max有关,习惯性写END了。
只有1行,直接最后print就可以了。

论坛徽章:
0
5 [报告]
发表于 2009-06-06 02:38 |只看该作者
#注意:awk里边的数组第一个元素下标从1开始!
#!/bin/bash
echo "1 3 8 7 4 6" | awk 'BEGIN {
Total=NF
for(n=1;n<=NF;n++)
Var[n]=$n
}

function sort(var,Num,i,j,tmp){
for(i=1;i<Num;i++){
if(var>var[i+1]){
tmp=var[i+1]
var[i+1]=var
var=tmp
}
}
return
}

/([0-9] )*/ {
sort(Var,Total)
printf("Number:%-5dMax:%d\n",Total,Var[Total])
}'

exit 0

[ 本帖最后由 linuxleio 于 2009-6-6 15:17 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2009-06-06 10:57 |只看该作者
  1. echo $@ | awk '{x=$1;for(i=1;i<=NF;i++)if($i>x)x=$i;print x}'
复制代码

tim的代码真是值得细读
我还打算
  1. echo $@ | awk '{x=$1;for(i=2;i<=NF;i++)if($i>x)x=$i;print x}'
复制代码

可是如过只输入一个数字呢....
tim  神一般的人物
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP