regex glob in shell

Pierre Bernhardt pierre at starcumulus.owl.de
Sat Sep 2 20:56:16 CEST 2006


Hallo,

ich habe ein kleines Problem welches ich nicht verstehe.
In der bash geht es, in der ksh net:

Damit es in der Bash geht, habe ich erst mal extended
globbing eingeschaltet:

shopt -s extglob

So nun zu meinem Problem:

Ich versuche mittels folgenden Befehl mir alle Dateien
anzeigen zu lassen, welche auf folgendes Muster passen:

pierre at starflake ~
$ touch PRE.{102,343,342,1}.ext

pierre at starflake ~
$ ls
PRE.1.ext  PRE.102.ext  PRE.342.ext  PRE.343.ext

pierre at starflake ~
$ pt=102

pierre at starflake ~
$ echo PRE.!(${pt}).ext
PRE.1.ext PRE.342.ext PRE.343.ext

Bis hier her gehts auch so in der ksh.

Nun aber folgendes:

bash:
pierre at starflake ~$ pt=102\|1

pierre at starflake ~$ echo PRE.!(${pt}).ext
PRE.342.ext PRE.343.ext

ksh:

pierre at starflake ~$ pt=102\|1

pierre at starflake ~$ echo PRE.!(${pt}).ext
PRE.1.ext PRE.342.ext PRE.343.ext

Geht nicht.

Jetzt mal ein Test:
pierre at starcflake ~$ echo PRE!(102|1).ext
PRE.342.ext PRE.343.ext

Geht.


pierre at starcflake ~$ touch PRE.102\|1.ext
pierre at starcflake ~$ echo PRE.!(${pt}).ext
PRE.1.ext PRE.342.ext PRE.343.ext

pierre at starcflake ~$ echo PRE!(102|1).ext
PRE.102|1.ext PRE.342.ext PRE.343.ext

Aha. Das oder-Zeichen ist kein oder-Zeichen.

Ich habe schon alles mögliche mit ausmaskieren versucht,
aber keine Lösung gefunden. Auch eval funktioniert
hier nicht, da eval gleich ne Pipe draus macht.

Hat irgend wer noch eine Idee, da ich diese
Möglichkeiten des Globbings sehr Hilfreich finde,
aber leider das Tool, dem ich die Befehle unterjuble,
diese nur an eine ksh weiter geben kann.

Getestet ist es übrigens auf eine Debian Sarge mit bash
2.05b.0(1) und der AT&T ksh (Paket ksh).

MfG...
Pierre Bernhardt


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 290 bytes
Desc: OpenPGP digital signature
URL: <http://lug-owl.de/pipermail/linux/attachments/20060902/9e0eda1f/attachment.sig>


More information about the Linux mailing list