如何将前导零添加到bash范围?
例如,我需要循环 01,02,03,..,29,30
如何使用 bash 来实现?
问问题
7286 次
5 回答
25
在最新版本的 bash 中,您可以执行以下操作:
echo {01..30}
输出:
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
或者如果它应该用逗号分隔:
echo {01..30} | tr ' ' ','
这也可以通过参数扩展来完成:
a=$(echo {01..30})
echo ${a// /,}
输出:
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
于 2012-11-14T09:58:12.977 回答
21
另一个seq技巧将起作用:
seq -w 30
如果您查看手册页,您将看到 -w 选项完全符合您的要求:
-w, --equal-width
equalize width by padding with leading zeroes
于 2012-11-14T10:04:29.253 回答
6
您可以使用 seq 的格式选项:
seq -f "%02g" 30
于 2012-11-14T09:53:00.623 回答
3
“纯 bash” 方式将是这样的:
echo {0..2}{0..9}
这将为您提供以下信息:
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
删除前 00 并添加后 30 并不难!
于 2012-11-14T09:56:13.293 回答
2
这有效:
printf " %02d" $(seq 1 30)
于 2012-11-14T09:51:17.300 回答