Bash: 格式化 n 位字符串中的数字
Bash: Formating numbers in a n digit string
我是 bash 新手。我想以 n
数字格式回显数字 1 到 x
。例如,让我们考虑 n=3
:5 应该变成 005,13 应该变成 013,110 应该保持 110。
实现此目的的一种方法是使用这种结构:
for i in $(seq 1 120)
do
if [ "$i" -lt "10" ]
then
echo "00$i"
elif [ "$i" -gt "99" ]
then
echo "$i"
else
echo "0$i"
fi
done
但是它非常难看,而且对于改变 n
(位数)的值真的不灵活。我宁愿有一个只用 n
数字进行格式化的函数?是否已经有内置功能?如果没有你能帮我创建这样的功能吗?
使用printf
:
for i in {1..120} ; do
printf '%03d\n' $i
done
%
开始格式化字符串
d
表示整数
3
表示长度=3
0
表示 零填充
\n
是一个换行符
我是 bash 新手。我想以 n
数字格式回显数字 1 到 x
。例如,让我们考虑 n=3
:5 应该变成 005,13 应该变成 013,110 应该保持 110。
实现此目的的一种方法是使用这种结构:
for i in $(seq 1 120)
do
if [ "$i" -lt "10" ]
then
echo "00$i"
elif [ "$i" -gt "99" ]
then
echo "$i"
else
echo "0$i"
fi
done
但是它非常难看,而且对于改变 n
(位数)的值真的不灵活。我宁愿有一个只用 n
数字进行格式化的函数?是否已经有内置功能?如果没有你能帮我创建这样的功能吗?
使用printf
:
for i in {1..120} ; do
printf '%03d\n' $i
done
%
开始格式化字符串d
表示整数3
表示长度=30
表示 零填充\n
是一个换行符