bash序列00 01 ... 10

Jua*_*blo 24 bash

在bash中,有

$ echo {1..10}
1 2 3 4 5 6 7 8 9 10
Run Code Online (Sandbox Code Playgroud)

我可以得到一个数字序列,但在某些情况下我需要

01 02 03 ... 10
Run Code Online (Sandbox Code Playgroud)

我怎么能得到这个?

我怎么能得到?

001 002 ... 010 011 .. 100
Run Code Online (Sandbox Code Playgroud)

fav*_*tti 47

这将适用于已coreutils安装的计算机上的任何shell (感谢评论者纠正我):

seq -w 1 10
Run Code Online (Sandbox Code Playgroud)

seq -w 1 100
Run Code Online (Sandbox Code Playgroud)


rob*_*bin 15

使用带-f参数的seq命令,尝试:

seq -f "%02g" 0 10

结果:00 01 02 03 04 05 06 07 08 09 10

seq -f "%03g" 0 10

结果:000 001 002 003 004 005 006 007 008 009 010


pb2*_*b2q 12

printf "%02d " {1..10} ; echo
Run Code Online (Sandbox Code Playgroud)

输出:

01 02 03 04 05 06 07 08 09 10
Run Code Online (Sandbox Code Playgroud)

同理:

printf "%03d " {1..100} ; echo 
Run Code Online (Sandbox Code Playgroud)

在更新版本的bash中,只需:

echo {01..10}
Run Code Online (Sandbox Code Playgroud)

和:

echo {001..100}
Run Code Online (Sandbox Code Playgroud)


jma*_*ary 6

for i in {01..99}; do
  echo $i
done
Run Code Online (Sandbox Code Playgroud)

将返回 :

01
02
03
04
05
06
07
08
09
10
...
Run Code Online (Sandbox Code Playgroud)

将 01 替换为 001,将 99 替换为 999 或 100 也将达到您的预期。


lyn*_*ynx 5

$ printf "%02d " {0..10}; echo
00 01 02 03 04 05 06 07 08 09 10 
$ printf "%03d " {0..100}; echo
000 001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031 032 033 034 035 036 037 038 039 040 041 042 043 044 045 046 047 048 049 050 051 052 053 054 055 056 057 058 059 060 061 062 063 064 065 066 067 068 069 070 071 072 073 074 075 076 077 078 079 080 081 082 083 084 085 086 087 088 089 090 091 092 093 094 095 096 097 098 099 100
Run Code Online (Sandbox Code Playgroud)

只需改变格式字符串中的字段宽度(在本例中为2和3),当然还有大括号扩展范围.该echo有只是为了美容目的,因为格式字符串不包含换行符本身.

printf 是内置的shell,但您可能还安装了coreutils的版本,可以就地使用.


dim*_*mba 5

仅限awk:

awk 'BEGIN { for (i=0; i<10; i++) printf("%02d ", i) }'
Run Code Online (Sandbox Code Playgroud)

  • 不需要awk:`for((i = 0; i <10; i ++)); 做printf"%02d"$ i; 完成` - 这是有效的bash. (3认同)