20

bash範囲に先行ゼロを追加する方法は?
たとえば、サイクル 01,02,03,..,29,30 が必要です。bash
を使用してこれを実装するにはどうすればよいですか?

4

5 に答える 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

man ページを確認すると、 -w オプションがまさにあなたの要件に合っていることがわかります。

-w, --equal-width
              equalize width by padding with leading zeroes
于 2012-11-14T10:04:29.253 に答える
6

seq の format オプションを使用できます。

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 に答える