2012-11-14 14 views
15

Come aggiungere lo zero iniziale alla gamma bash?
Ad esempio, ho bisogno del ciclo 01,02,03, .., 29,30
Come posso implementarlo usando bash?Intervallo con zero iniziale in bash

+0

possibile duplicato di [Zero Padding In Bash] (http://stackoverflow.com/ domande/8789729/zero-padding-in-bash) –

risposta

16

un'altra seguenti trucco funziona:

seq -w 30 

se si controlla la pagina man, si vedrà l'opzione -w è esattamente per il vostro requisito:

-w, --equal-width 
       equalize width by padding with leading zeroes 
2

Questo funziona:

printf " %02d" $(seq 1 30) 
5

È possibile utilizzare l'opzione formato di seguenti:

seq -f "%02g" 30 
3

Un modo "puro bash" sarebbe qualcosa di simile:

echo {0..2}{0..9} 

Questo darà voi il seguente:

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 

Rimuovere il primo 00 e aggiungere gli ultimi 30 non è troppo difficile!

15

Nelle versioni recenti di bash si può fare:

echo {01..30} 

uscita:

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 

o se deve essere separati da virgola:

echo {01..30} | tr ' ' ',' 

che può anche essere realizzato con parameter expansion:

a=$(echo {01..30}) 
echo ${a// /,} 

uscita:

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 
Problemi correlati