Bash regularni vyraz

Milan Zamazal mz na pdm.pvt.net
Pátek Červenec 23 10:06:25 CEST 1999


>>>>> "DR" == David Rohleder <davro na ics.muni.cz> píše:

    DR> vyraz ${a//[^\/]*\//../} zameni pouze prvni vyskyt

Mně to dělá:

 $ X=nazdar/ahoj/tady
 $ echo ${X//[^\/]*\//../}
 ../tady

což je správně -- nezapomenout, že // matchuje nejdelší výskyt,
tj. požere se vše až po poslední lomítko.

Šlo by to např. takhle:

  Y='..'; N=${X//[^\/]/}; N=${#N}; I=0;
  while [ $I -lt $N ]; do Y=../$Y; I=$((I+1)); done

Možná to jde i nějak výrazně inteligentněji, chybí mi regulární výrazy.

Milan Zamazal

-- 
Některé zajímavé free softwarové projekty:
Česká nadace pro podporu free softwaru, http://www.freesoft.cz
Debian CZ/SK, http://www.debian.cz
Debian GNU/{Linux,Hurd}, http://www.debian.org


Další informace o konferenci Linux