- 论坛徽章:
- 32
|
本帖最后由 yestreenstars 于 2013-06-25 14:03 编辑
昨天居然没看到这个帖子~ 来晚了,先把会的做了吧,其他慢慢补充~
第一题:- awk '{a[$NF]++}END{for(i in a)print i,a[i]}' illegal.log | sort -k2nr | head -10
复制代码 第四题:
区别莫非是前者比后者简洁?
第五题:- echo '1234' | awk -F '' '{for(i=1;i<=NF;i++)s+=$i;print s}'
复制代码 第六题:
既然不能用-d参数,那我用-s和--date参数总行吧? 不过估计这个答案通不过,看评委的心情吧~- date -s 2013-05-23
- date +%j
- date --date yesterday
复制代码 等我想出shell的方法再补充~
shell基础太差了,遇到数组的问题就放弃了,最后还是用我最熟悉的awk来做,代码和运行结果如下:- [root@localhost ~]# cat a
- #!/bin/awk -f
- BEGIN{
- FS="-"
- }
- {
- $2+=0;
- $3+=0;
- a[1]=a[3]=a[5]=a[7]=a[8]=a[10]=a[12]=31;
- a[4]=a[6]=a[9]=a[11]=30;
- if($1%4==0&&$1%100!=0||$1%400==0)a[2]=29;
- else a[2]=28;
- if($2==1)print $3;
- else{
- for(i=1;i<$2;i++)s+=a[i];
- print s+=$3
- }
- if($2==1&&$3==1)print $1-1"-12-31";
- else if($3==1)printf "%d-%02d-%02d\n",$1,$2-1,a[$2-1];
- else printf "%d-%02d-%02d\n", $1,$2,$3-1
- }
- [root@localhost ~]# ./a <<< "2013-05-23"
- 143
- 2013-05-22
- [root@localhost ~]#
复制代码 第七题:
半蒙半推(大部分是蒙的):
首先,根据所有的三位数都必须是奇数可以推出每行每列的最后一个数都是奇数,也就是1、3、5、7、9,其中有一个奇数被用了2次,就是在右下角的那个奇数。再根据总和为4446,可以推出位于右下角的奇数为1,因为1+3+5+7+9=25,此时只有1能使尾数变成6,所以一定是1。然后其他的,因为4446算是一个比较大的数了,所以我判断每行每列应该都是比较大的数字,所以我把较大的数字放在了行头或列头,尝试了3次,最终破解了,最终的九宫图如下:最后说明一下,管理员出这题的目的应该是要用算法来做的,但我算法太烂了,而这题的算法应该很复杂,所以我就投机取巧用这种半蒙半推的方法来做了~
第八题:
事实证明是可以的:- [root@localhost test]# echo $SHELL
- /bin/bash
- [root@localhost test]# ll
- 总用量 0
- [root@localhost test]# touch "t t"
- [root@localhost test]# ll
- 总用量 0
- -rw-r--r--. 1 root root 0 5月 23 00:17 t t
- [root@localhost test]# rm *
- rm:是否删除普通空文件 "t t"?y
- [root@localhost test]# ll
- 总用量 0
- [root@localhost test]#
复制代码 我的理解是*代表所有文件,所以无论是否包含空格,都能删除~
第十题:
1.- ls | grep -v '^20130605'
- ls | awk '!/^20130605/'
- ls | sed '/^20130605/d'
复制代码 2.- ls | awk '{s=$0;gsub(/\[/,"");gsub(/\]/,"");gsub(/ /,"");system("mv \""s"\" "$0)}'
复制代码 |
|