细节之处方显linux真功夫

缘起:昨天下午老男孩培训交流群208160987里有人发问,如下的问题怎么搞,其实这个问题在18个月前,老男孩的博文里就发过多种思路方法了。如今,香港服务器,再重新整理发出和大家分享。全部解答为同学们的思想的结晶!你们都是好样的。亲爱的同学们,博友们,老男孩爱你们。加油,加油,加油!问题:linux下生成000102..99的这些数,怎么生成?注意:所有内容必须横排显示(按理不说也该理解题意的)。

说明:本博文是以一个小的面试题为载体,讲述如下知识点的综合运用:seqtr{}printfxargsawksedevalechofor循环等数个重要基础命令的实战用法案例:特把这些知识点的案例通过一道小题分享给大家。如果你还有办法欢迎评论发到下面,共同完善本博文。

解答1:本题的知识点为seq的-s和-w

[root@oldboy ~]# seq -s ” ” -w 9901 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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99

老男孩老师点评:seq的-w是补全数字的宽度,不够的前面加0补。-s是指定分隔符,香港服务器,默认是\n。

解答2:本题的知识点为tr的用法

[root@oldboy ~]# seq -w 99|tr “\n” ” “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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99

老男孩老师点评:由于seq默认的分隔符是"\n",因此,在输出后需要把所有行尾的"\n"替换为空格。

解答3:本题的知识点是大括号序列的用法

[root@oldboy ~]# echo {00..99}0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99弥补的三个小办法:[oldboy@oldboy ~]$ echo 01 02 03 04 05 06 07 08 09 {10..99}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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99[oldboy@oldboy ~]$ echo `seq -w 10` {11..99}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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99[oldboy@oldboy ~]$ printf “%02d ” $(echo {00..99})00 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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99

老男孩老师点评:有不同的系统及SHELL版本可以补全前10前的0,美国空间,但是,这里的Centos5.8无法加0。

解答4:本题的知识点是seq-f的用法

[oldboy@oldboy ~]$ seq -s ” ” -f “%02g” 9901 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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99

解答5:本题的知识点是xargs的用法

[oldboy@oldboy ~]$ seq -f”%02g” 99 |xargs -n 9901 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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99

老男孩老师点评:xargs有时候是非常有用的命令,要熟练掌握它。

解答6:本题的知识点是for循环打印的用法

[root@oldboy ~]# for i in `seq -w 99`;do echo -n $i” “; done01 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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99[root@oldboy ~]# for i in `seq 99`;do printf “%02d ” $i;done01 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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99[root@oldboy ~]# for ((i=0;i<100;i++));do printf “%02d ” $i;done00 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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99

老男孩老师点评:数字序列可以使用任意的命令替换得到。

我们什么都没有,唯一的本钱就是青春。

细节之处方显linux真功夫

相关文章:

你感兴趣的文章:

标签云: