问题:某学生发问:
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 这样的格式呢运维
解答:
思路决定出路!同窗们要多思考啊!
本题解决办法太多,举几个例子和初学运维的兄弟分享。ide
法0:{}spa
[root@C58 scripts]# echo 00{1..3}
001 002 0033d
法1:seq法
[root@test ~]# seq -w 100 |sed -n '1,3p'
001
002
003
此法效率不高。可用下面法4替代。
尽可能让第一次的结果越接近最终结果越好。ip
法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
003it
法4:seq加sed加正则法
[root@test ~]# seq -w 101 103|sed -e 's/^1/0/g'
001
002
003for循环
法5:
[root@test ~]# for ((i=1;i<=3;i=i+1));do printf "%03d\n" $i;done
001
002
003class
法6:sed命令中&命令用法,增长或修改一个字符串
[root@test ~]# seq 3|sed 's/^[0-9]/00&/g'
001
002
003test
法7:sed命令中()和\1的用法,rewrite里也有类此用法
[root@test ~]# seq 3|sed 's/\(^[0-9]\)/00\1/g'001002003