regulérní výraz v bash-i
BzF
bzf na centrum.cz
Čtvrtek Březen 7 03:58:04 CET 2002
Dobrý den,
potřebuji udělat následující věc pomocí bashe a už nevím jak dál:
Ten skriptik by měl vypsat rozsah zadaných čísel a před ně doplnit nuly.
- tedy dle ukázky (viz. níže):
0001
...
0009
0010
...
0099
0100
...
0999
atd
v reálu bude snad maximálně 6 úrovní (v ukázce jen 4) čili maximálně 999999
(v ukázce jen 9999);
pro 100 000 - 999 999 (v ukázce 1000-99999) se už žádná nula přidávat
nebude (tolik toho snad nikdy nebude)
(ale pokud se to bude řešit proměnnou, tak to asi bude jedno)
Problém mám v tom, že bych chtěl, aby bylo možno interaktivně zadat i počet
nul, které se mají před čísla doplnit (před jednotky - tedy1-9), a pro každý
další řád (desítky, stovky ...), aby se jejich počet o jednu snížil.
(tedy určit, jestli to začne při zadání pěti 0 vypisovat:
000001
000002
...
000010
000011
...
nebo při zadání dvou 0 vypisovat:
001
002
...
010
011
...
nechci žádné kontroly na to, jestli počet řádů cílového čísla je menší
než počet nul, jestli je Od menší než Do atd...(pokud to bude zapotřebí,
tak to už tam zvládnu dodělat))
A ne to mít tak ošklivě (i když taky funkčně, ale s nutností rejpat
se v tom) zbastlené.
Dík
BzF
(tohle je jen kostra na ukázku, o co mi jde, ve skutečnosti to bude
složitější, ale s tím už si poradím, resp. mám to hotovo, jen ty nuly musím
před použitím upravit ručně)
----------zacatek----------
#!/bin/bash
echo "Zadej Od kolika cislovat"
read number0
echo "Zadej Do kolika cislovat"
read number1
echo
while [ "$number0" -le "$number1" ]
do
if [ $number0 -lt 10 ];
then
echo "000$number0";
fi
if [ $number0 -ge 10 ] && [ $number0 -lt 100 ];
then
echo "00$number0";
fi
if [ $number0 -ge 100 ] && [ $number0 -lt 1000 ];
then
echo "0$number0";
fi
if [ $number0 -ge 1000 ] && [ $number0 -lt 10000 ];
then
echo "$number0";
fi
if [ $number1 -ge 10000 ];
then
echo "Prilis velke cislo";
exit 1
fi
number0=`expr $number0 + 1`
done
----------konec----------
Další informace o konferenci Linux