regexp v bashi

Pavel Kankovsky peak na argo.troja.mff.cuni.cz
Sobota Květen 28 15:39:36 CEST 2005


On Thu, 26 May 2005 kocek.kvetoslav na vestizol.cz wrote:

> > > '[0-9]\{1,3\}[.][0-9]\{1,3\}[.][0-9]\{1,3\}[.][0-9]\{1,3\}'
> >
> > ./ip_unblock 888.888.888.888
> 
> jj, tohle jsem vyresil pomoci sed, awk a dalsi kontroly na rozsah 0-255.

Jen takove tri poznamky na okraj:

1. Lze to udelat ciste grepem, protoze regularni vyraz, kteremu vyhovuji 
prave cisla 0 az 255, je nasledujici (0|[1-9][0-9]|1[0-9]{2}|2([0-4][0-9]|
5[0-5])). Lidsky receno: 0, nebo dve cislice, nebo tri cislice zacinajici 
1, nebo tri cislice zacinajici 20 az 24, nebo tri cislice zacinajici 25
a koncici 0 az 5. Pouzivam pro zjednoduseni syntaxi, kde se pred {, (,
| apod. nepise \. To (GNU) grep umi, kdyz se zavola jako egrep.

2. Pokud se pouzije dialekt, ktery umoznuje testovat zadany pocet 
opakovani, pak misto testovani stringu "S" proti vyrazu typu "A\.A\.A\.A"
lze s vyhodou testovat "S." proti vyrazu "(A\.){4}" a neni tedy treba
A ctyrikrat opisovat.

3. Nekdy muze byt lepsi (rozumej kratsi a srozumitelnejsi) misto
"echo S | grep A" pouzit "expr S : A".

--Pavel Kankovsky aka Peak  [ Boycott Microsoft--http://www.vcnet.com/bms ]
"Resistance is futile. Open your source code and prepare for assimilation."



Další informace o konferenci Linux