2012-11-14 14 views
15

Jak dodać wiodący zera do zakresu bash?
Na przykład potrzebuję cyklu 01,02,03, .., 29,30
Jak mogę zaimplementować to za pomocą bash?Zasięg z początkowym zerem w bashie

+0

możliwy duplikat [Zero Padding In Bash] (http://stackoverflow.com/ pytania/8789729/zero-padding-in-bash) –

Odpowiedz

16

inny nast trik zadziała:

seq -w 30 

sprawdzając na stronie man, widać opcja -w jest dokładnie swoje wymagania:

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

można użyć opcji formatowania SEK za:

seq -f "%02g" 30 
3

"Czysty bash" sposobem byłoby coś takiego:

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

To da masz następujące:

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 

Usunięcie pierwszych 00 i dodanie ostatnich 30 nie jest zbyt trudne!

15

W ostatnich wersjach bash można zrobić:

echo {01..30} 

wyjściowy:

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 

Lub jeśli powinno być oddzielone przecinkami:

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

które mogą być również realizowane parameter expansion:

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

wyjściowa:

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