答老男孩培训班学生典型问题一例

问题:某学生发问:
XX(11XXX)  10:22:26
[root@client ~]# for ((i=001;i<=003;i=i+1));do echo $i;done
1
2
3
请教如何打印出001 002 003 这样的格式呢

解答:
思路决定出路!同学们要多思考啊!
本题解决办法太多,举几个例子和初学运维的兄弟分享。

法0:{}

[root@C58 scripts]# echo 00{1..3}
001 002 003

法1:seq法
[root@test ~]#  seq -w 100 |sed -n '1,3p'
001
002
003
此法效率不高。可用下面法4替代。
尽量让第一次的结果越接近最终结果越好。

法2:seq -f法
[root@test ~]#  seq -f %03g 3
001
002
003

法3:for循环
[root@test ~]# for ((i=1;i<=3;i=i+1));do echo 00$i;done
001
002
003

法4:seq加sed加正则法
[root@test ~]#  seq -w 101 103|sed -e 's/^1/0/g'
001
002
003

法5:
[root@test ~]# for ((i=1;i<=3;i=i+1));do printf "%03d\n" $i;done
001
002
003

法6:sed命令中&命令用法,增加或修改一个字符串
[root@test ~]# seq 3|sed  's/^[0-9]/00&/g'
001
002
003

法7:sed命令中()和\1的用法,rewrite里也有类此用法
[root@test ~]# seq 3|sed  's/\(^[0-9]\)/00\1/g'
001
002
003

你可能感兴趣的:(linux,休闲,老男孩,实战运维,实战培训)