免费注册 查看新帖 |

Chinaunix

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

如何一一对应 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2010-08-02 21:13 |只看该作者
能否告诉我arr = "  "(两个空格)?
为什么不是一个空格呢? arr = " " //当然结果肯定不一样.
测试结果:有一个空格情况
  1. 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
  2. 0  0  0  0  05 06 0  0  0  0  0  0  0  0  15 0  0  0  0  0  0  0  23 0  0  0  27 0  0  30 0  0  0  
  3. 01 0  0  0  0  0  0  08 0  0  0  0  0  0  0  16 17 0  0  0  0  0  0  0  25 0  0  0  0  30 0  0  0  
  4. 0  0  0  0  05 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  21 0  0  0  0  0  0  28 29 30 31 0  0  
  5. 01 0  0  0  0  0  0  08 0  0  0  12 13 0  0  0  0  0  0  0  0  0  0  24 0  0  27 0  0  0  0  0  0  
  6. 0  02 0  0  0  0  0  0  0  10 0  0  0  14 0  0  0  18 0  20 0  0  0  0  0  0  0  0  0  30 0  0  0  
  7. 0  02 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  20 21 22 23 0  0  0  0  0  0  0  31 0  0  
  8. 01 0  0  0  0  0  0  08 0  0  0  0  13 14 0  0  0  0  0  0  0  0  0  0  0  0  27 0  0  0  31 0  0  
  9. 0  02 03 0  0  0  0  0  09 0  0  0  0  0  0  0  0  0  0  0  0  0  0  24 0  26 27 0  0  0  0  0  0
复制代码
如果是两个空格,结果为我所需要的结果.

论坛徽章:
0
12 [报告]
发表于 2010-08-02 21:15 |只看该作者
arr="  " 为什么是两个空格?
为什么arr=" " 不是一个空格呢?
一个空格的测试结果:
  1. 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
  2. 0  0  0  0  05 06 0  0  0  0  0  0  0  0  15 0  0  0  0  0  0  0  23 0  0  0  27 0  0  30 0  0  0  
  3. 01 0  0  0  0  0  0  08 0  0  0  0  0  0  0  16 17 0  0  0  0  0  0  0  25 0  0  0  0  30 0  0  0  
  4. 0  0  0  0  05 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  21 0  0  0  0  0  0  28 29 30 31 0  0  
  5. 01 0  0  0  0  0  0  08 0  0  0  12 13 0  0  0  0  0  0  0  0  0  0  24 0  0  27 0  0  0  0  0  0  
  6. 0  02 0  0  0  0  0  0  0  10 0  0  0  14 0  0  0  18 0  20 0  0  0  0  0  0  0  0  0  30 0  0  0
复制代码

论坛徽章:
0
13 [报告]
发表于 2010-08-02 21:18 |只看该作者
回复 6# ywlscpl


    好,mark一下,明天慢慢看.谢谢.

论坛徽章:
2
白羊座
日期:2013-10-29 13:29:222015亚冠之全北现代
日期:2015-10-25 08:13:02
14 [报告]
发表于 2010-08-02 21:35 |只看该作者
回复 6# ywlscpl


    如果每行的数据不是 从小到大排列 就会出错.

论坛徽章:
2
白羊座
日期:2013-10-29 13:29:222015亚冠之全北现代
日期:2015-10-25 08:13:02
15 [报告]
发表于 2010-08-02 21:37 |只看该作者
本帖最后由 miniqq 于 2010-08-02 21:52 编辑
arr="  " 为什么是两个空格?
为什么arr=" " 不是一个空格呢?
一个空格的测试结果:
addictlinux 发表于 2010-08-02 21:15



    一个 空格 (<10) 不足  "02s" , 所以打出了个 0 补上.


你可以改改打印方式.

论坛徽章:
0
16 [报告]
发表于 2010-08-02 22:03 |只看该作者
  1. #!/usr/bin/awk -f

  2. function println(arr)
  3. {
  4.         for(i=1;i<=33;i++)
  5.         {
  6.                 if(i in arr) printf("%02d",i)
  7.                 else printf("  ")
  8.                 if(i%11==0 && i<33) printf("|")
  9.         }
  10.         print ""
  11. }

  12. BEGIN {
  13.         for(i=1;i<=33;i++) a[i]=1
  14.         println(a)
  15. }

  16. {
  17.         delete a
  18.         for(i=1;i<=NF;i++) {a[$i+0]=1}
  19.         println(a)
  20. }
复制代码

论坛徽章:
2
白羊座
日期:2013-10-29 13:29:222015亚冠之全北现代
日期:2015-10-25 08:13:02
17 [报告]
发表于 2010-08-02 22:16 |只看该作者
xborant 发表于 2010-08-02 22:03



    原来 awk有这个写法  if ( i in arr)
呵呵,我写多了.

论坛徽章:
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
18 [报告]
发表于 2010-08-03 08:54 |只看该作者
回复 9# miniqq


    思路很好,就是写得复杂了些。

论坛徽章:
0
19 [报告]
发表于 2010-08-03 09:04 |只看该作者
这应用,,发现这是shell应用最牛B的一次了

论坛徽章:
16
IT运维版块每日发帖之星
日期:2015-08-24 06:20:00综合交流区版块每日发帖之星
日期:2015-10-14 06:20:00IT运维版块每日发帖之星
日期:2015-10-25 06:20:00IT运维版块每日发帖之星
日期:2015-11-06 06:20:00IT运维版块每日发帖之星
日期:2015-12-10 06:20:00平安夜徽章
日期:2015-12-26 00:06:302016猴年福章徽章
日期:2016-02-18 15:30:34IT运维版块每日发帖之星
日期:2016-04-15 06:20:00IT运维版块每日发帖之星
日期:2016-05-21 06:20:00综合交流区版块每日发帖之星
日期:2016-08-16 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-08-14 06:20:00
20 [报告]
发表于 2010-08-03 09:34 |只看该作者
awk 'BEGIN{for (i=1;i<=33;i++) {if (i<=16) blue[i]=i;red[i]=i}srand();for (j=1;j<=1000;j++) {if (j==1) {print "blue: "blue[int(rand()*16)+1];continue}v=int(rand()*33)+1;if (!a[v]) {n++;a[v]=1;b[n]=v;if (n==6) break}}for (k=1;k<=6;k++) print "red: "red[b[k]]}'
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP