regexp v bashi

Dalibor Straka dast na panelnet.cz
Čtvrtek Květen 26 20:16:51 CEST 2005


On Thu, May 26, 2005 at 06:48:53AM +0200, kocek.kvetoslav na vestizol.cz wrote:
> > > potrebuju nejakou pomoc s regularnim vyrazem.
> > > (nejsem na to zadny expert) Tuhle konstrukci
> > > jsem nasel na netu.
> > > 
> > >   if [ ! "$(echo $1 | grep
> > > '[0-9]\{1,3\}[.][0-9]\{1,3\}[.][0-9]\{1,3\}[.][0-9]\{1,3\}')" ]
> > >     then
> > >     echo "Spatne zadana IP adresa."
> > >     else
> > >     echo "OK"
> > >   fi
> > > 
> > 
> > ./ip_unblock 888.888.888.888
> 
> jj, tohle jsem vyresil pomoci sed, awk a dalsi kontroly na rozsah 0-255.

Kdyz byste grepem _zajistil format_ <cislo>tecka<cislo>...
'^[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*$'
Pak bych v cecku hrave pouzil tu osklivou funkci scanf

scanf("%d.%d.%d.%d",ip,ip+1,ip+2,ip+3);
if( RANGE(ip) && RANGE(ip+1) && RANGE(ip+2) && RANGE(ip+3)
	return 0;
return -1;

a je vystarano. Jeste #define RANGE(n) (((n)>=0)&&((n)<=255)));

Kolik jazyku znas, tolikrat jsi clovekem
-- Dalibor Straka


Další informace o konferenci Linux