答老男孩培訓班學生典型問題一例

問題:某學生髮問:
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 003
3d

法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
003
it

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

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

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

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

相關文章
相關標籤/搜索