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