免费注册 查看新帖 |

Chinaunix

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

[文本处理] 怎么对数组排序 [复制链接]

boldeagle 该用户已被删除
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-08-11 19:01 |只看该作者 |倒序浏览
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
3
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:51:162015年亚洲杯之阿曼
日期:2015-04-07 20:00:59
2 [报告]
发表于 2012-08-11 19:03 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
3 [报告]
发表于 2012-08-11 19:44 |只看该作者
啥的数组?

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
4 [报告]
发表于 2012-08-11 19:44 |只看该作者
啥的数组?

论坛徽章:
0
5 [报告]
发表于 2012-08-11 19:49 |只看该作者
其实。。。先输出再排序多简单,比如
sort -k 2

非要在shell script排序的话:写了一个。。。供参照
  1. #!/bin/bash
  2. #set -x
  3. #
  4. declare nos=("aaa 5" "bbb 1" "ccc  3")
  5. array_size=${#nos[@]}
  6. echo array_size is $array_size

  7. #
  8. # Prints the number befor sorting
  9. #
  10. for (( i = 0; i < array_size ; i++ ))
  11. do
  12.     echo ${nos[$i]}
  13. done

  14. #
  15. # Now do the Sorting of numbers
  16. #

  17. for (( i = 0; i < array_size ; i++ ))
  18. do
  19.    for (( j = $i; j < array_size; j++ ))
  20.    do  
  21.       temp_i=`echo ${nos[$i]} | awk '{ print $2 }'`
  22.       temp_j=`echo ${nos[$j]} | awk '{ print $2 }'`
  23.       if [ $temp_i -gt $temp_j  ]; then
  24.            t=${nos[$i]}
  25.            nos[$i]=${nos[$j]}
  26.            nos[$j]=$t
  27.       fi  
  28.    done
  29. done

  30. #
  31. # Print the sorted number
  32. #
  33. echo -e "\nSorted Numbers in Ascending Order:"
  34. for (( i=0; i < array_size; i++ ))  
  35. do
  36.   echo ${nos[$i]}
  37. done
复制代码

论坛徽章:
0
6 [报告]
发表于 2012-08-11 19:56 |只看该作者
是不是lz没表述清楚呢?
对数组排序,排序之后怎么着?

论坛徽章:
3
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:51:162015年亚洲杯之阿曼
日期:2015-04-07 20:00:59
7 [报告]
发表于 2012-08-11 22:05 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
boldeagle 该用户已被删除
8 [报告]
发表于 2012-08-12 23:47 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
9 [报告]
发表于 2012-08-13 09:12 |只看该作者
回复 8# boldeagle


    你可以自己先看看 echo ${a[@]} 输出的是什么。。
  1. personball@vostro:SHELL$./ArrayTest
  2. bbb 1
  3. ccc 3
  4. aaa 5
  5. personball@vostro:SHELL$cat ArrayTest
  6. #!/bin/bash
  7. #Bash 版本4以上

  8. declare -A arr
  9. arr=([aaa]=5 [bbb]=1 [ccc]=3)
  10. for v in "${!arr[@]}"
  11. do
  12.         echo "$v ${arr[$v]}"
  13. done

  14. personball@vostro:SHELL$
复制代码
boldeagle 该用户已被删除
10 [报告]
发表于 2012-08-28 20:30 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP