免费注册 查看新帖 |

Chinaunix

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

[游戏娱乐] 2012年ChinaUnix社区Shell编程大赛 [结束评审 公布部分答案](获奖名单已公布-5-24) [复制链接]

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
1 [报告]
发表于 2012-03-07 16:41 |显示全部楼层
本帖最后由 waker 于 2012-03-14 15:44 编辑

投降有鼓励奖吗?

第九题

  1. #! /bin/bash
  2. newpasswd=$(mkpasswd -l8)
  3. exec 3<>newpasswd.log
  4. echo -e "Newpasswd:\t$newpasswd\nClient\tStatus" >&3
  5. for ((i=1;i<1001;i++))
  6.         do
  7.                 client=$(printf "client%04d" $i)
  8.                 { ssh $client "echo $newpasswd|passwd --stdin orcale"
  9.                 echo -e "$client\t$?" >&3
  10.                 }&
  11.                 [ ${i: -1} -eq 0 ]&&wait
  12. done
  13. exec 3>&-
复制代码
第十题

  1. #! /bin/bash

  2. sqlplus myuser/mypassset <<EOF
  3. head off
  4. set feed off
  5. set headsep off
  6. set newp none
  7. set linesize 255
  8. set sqlblanklines OFF
  9. select id from employee1 order by id
  10. EOF >id_oracle
  11. sqlplus myuser/mypassset <<EOF
  12. head off
  13. set feed off
  14. set headsep off
  15. set newp none
  16. set linesize 255
  17. set sqlblanklines OFF
  18. select email from employee1 order by email
  19. EOF >email_oracle

  20. mysql -umyuser -pmypass -e "select id from dbSecond.employee2 order by id" >id_mysql
  21. mysql -umyuser -pmypass -e "select email from dbSecond.employee2 order by email" >email_mysql

  22. sort -m id_{oracle,myslq}|uniq -u >different_id.txt
  23. sort -m email_{oracle,myslq}|uniq -u >different_email.txt
复制代码
其它题在23#
http://bbs.chinaunix.net/forum.p ... &fromuid=467748

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
2 [报告]
发表于 2012-03-08 13:09 |显示全部楼层
本帖最后由 waker 于 2012-03-08 13:38 编辑

先试试1-8题吧
第一题:
awk -F ' ' 这等同于缺省设置,以"空白"分割域,并忽略行首尾的"空白"
awk -F '[ ]' 以单个空格符分割域,多个空格之间将产生"空域",空格符位于行首尾将产生"空域"
awk -F '[ ]+'以连续空格符分割域,连续空格符位于行首尾将产生"空域"
第二题:不一样,awk会对每行都匹配两个模式,而sed匹配到第一个模式后会在"下面"行中尝试匹配第二个模式
例子

  1. [waker@freebsd ~]$ cat urfile
  2. barfoo
  3. foo1,foo2
  4. foobar
  5. foo2
  6. [waker@freebsd ~]$ awk '/foo1/,/foo2/' urfile
  7. foo1,foo2
  8. [waker@freebsd ~]$ sed -n '/foo1/,/foo2/p' urfile
  9. foo1,foo2
  10. foobar
  11. foo2
复制代码
第三题:
  1. echo {a,b,c,e,f}{1,2,3}
复制代码
第四题:
不太明白,猜一下吧
  1. echo 'aaabcccaaabbbccceeeaaaffcccaaabbbffccc'|sed 's/\(\(.\)\2*\)/\1\n/g;:a;s/\([^ ]\+\n\)\(.*\n\)\1/\1\2/;ta;s/\n//g'
复制代码
第五题: 既然双引号中的\<newline>是续行符,为什么结果不是"foo  barabc def"?
因为我们通常讨论的\转义啊" '引用啊是在讨论shell如何解释命令,而这个命令替代中的\<newline>是从子进程的标准输出来的,暂时和转不转义没有关系?
在命令替代发生以后通过shell又要来解释替代取得的结果的时候,由于""引用的保护,echo 命令只有一个参数,`foo  bar\
abc def';文件的内容就"原样"输出了

第六题: 同第五题,在命令替代发生以后通过shell又要来解释替代取得的结果的时候,因为没用引用,替代的结果进行一次单词分割(word  splitting),
echo 有四个参数 `foo'  `bar\' `abc' `def',两个空格变一个其实是:2-2+1=1

第七题:
如果确定c不在最后一行
  1. echo '/a/,?c?p'|ed -s urfile
复制代码
如果不能确定的话
  1. ed -s urfile <<\EOF
  2. /a/ks
  3. g/c/ke
  4. `s,`ep
  5. q
  6. EOF
复制代码
第八题:

  1. seq 9|awk '{a[NR]=$0}END{for(i=1;i<NR;i++)print a[i],a[i+1],a[i+2]}'
复制代码
  1. seq 11|sed   'N;:a;N;s/\n/ /gp;s/[^ ]* //;ta'
复制代码

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
3 [报告]
发表于 2012-03-29 11:12 |显示全部楼层
回复 62# xiaopan3322

就为了让你感受一下差距
   

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
4 [报告]
发表于 2012-04-10 15:15 |显示全部楼层
鼠标能换包包吗?

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
5 [报告]
发表于 2012-04-18 10:57 |显示全部楼层
回复 86# seesea2517


    mkpasswd是expect所附带的一个工具,是一个expect脚本,如果你的环境里没有expect就应该没有mkpasswd,即使有也运行不了

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
6 [报告]
发表于 2012-04-18 16:31 |显示全部楼层
send_linux 发表于 2012-04-12 14:15
这个可以,呵呵

什么时候让领导把俺的包包和书一起寄来吧

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
7 [报告]
发表于 2012-04-18 16:31 |显示全部楼层
拍得几本书
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP