我有一組循環的記錄。數字範圍從0000001到0089543,生病的是UIDX。如何在Bash中增加零填充int
,如果我嘗試類似:
for ((i=0; i< 0089543; i++)); do
((UIDX++))
done
計數器加1,2,3,4,而不是到0000001,0000002 ......我需要。
填充這些前導零的最佳方法是什麼?
我有一組循環的記錄。數字範圍從0000001到0089543,生病的是UIDX。如何在Bash中增加零填充int
,如果我嘗試類似:
for ((i=0; i< 0089543; i++)); do
((UIDX++))
done
計數器加1,2,3,4,而不是到0000001,0000002 ......我需要。
填充這些前導零的最佳方法是什麼?
使用printf
命令到數字與前導零的格式,如:
for ((i = 0; i < 99; ++i)); do printf -v num '%07d' $i; echo $num; done
從man bash
:
的printf [-v VAR]格式[參數]
寫的格式化參數到格式控制下的標準輸出。 -v選項會將輸出分配給變量var,而不是打印到標準輸出。
+1,也很有用。 – 0xC0000022L 2011-04-07 16:42:45
你可以使用序列命令,非常有用的在您的情況
seq -w 0089543
根據您的需要刪除第一個和最後一個數字,比如,如果你需要到達0089542然後命令使用是
seq -w 0089542
+1,謝謝。到目前爲止,我總是使用字符串連接來實現效果。 – 0xC0000022L 2011-04-07 16:42:14
猛砸4有一個很好的方法來解決這個問題:
for i in {0000000..0089543}; do
echo $i
done
在任何語言中,數字和數字顯示都是不同的問題。 '000001'只是格式選擇。 – JimB 2011-04-07 16:38:23