Hallo,
ich möchte in einem Shellscript eine Textvariable mit Pattern Matching parsen. Mit perl ist das für mich kein Problem, nur geht es nicht auch ohne? bash unterstützt seit 2004 wohl auch regex, aber ich weiß nicht wie man die Rückbezüge (Teilstring) hinbekommt.
Mit perl würde das so gehen:
echo laufbild01_10.ppm | perl -e '<STDIN> =~ /([0-9]+)_[0-9]+/; print "$1\n";'
was mir beispielsweise die ziffern '01' aus einem Dateinamen zurückgeben würde. Jetzt habe ich vergeblich versucht das mit awk, sed, egrep bzw. direkt in bash (shopt -s globstar) hinzukriegen. Wie kriege ich den Teilstring, der in den runden Klammern steht, nur heraus. Bei all meinen Versuchen habe ich immer nur den kompletten String bei einem Match zurückbekommen können:(
Ich möchte auch weder einen festen Delimiter (wie "_" in dem Beispiel) nutzen, noch hat der gewünschte Teilstring eine feste Position, sondern wirklich das regexp-pattern parsen (also kein cut oder tr oder awk -F).
Gibt es dazu einen einfachen weg oder muss ich wirklich noch perl installieren auf meinem raspberry pi :(
Danke im Voraus,
Kermit
ich möchte in einem Shellscript eine Textvariable mit Pattern Matching parsen. Mit perl ist das für mich kein Problem, nur geht es nicht auch ohne? bash unterstützt seit 2004 wohl auch regex, aber ich weiß nicht wie man die Rückbezüge (Teilstring) hinbekommt.
Mit perl würde das so gehen:
echo laufbild01_10.ppm | perl -e '<STDIN> =~ /([0-9]+)_[0-9]+/; print "$1\n";'
was mir beispielsweise die ziffern '01' aus einem Dateinamen zurückgeben würde. Jetzt habe ich vergeblich versucht das mit awk, sed, egrep bzw. direkt in bash (shopt -s globstar) hinzukriegen. Wie kriege ich den Teilstring, der in den runden Klammern steht, nur heraus. Bei all meinen Versuchen habe ich immer nur den kompletten String bei einem Match zurückbekommen können:(
Ich möchte auch weder einen festen Delimiter (wie "_" in dem Beispiel) nutzen, noch hat der gewünschte Teilstring eine feste Position, sondern wirklich das regexp-pattern parsen (also kein cut oder tr oder awk -F).
Gibt es dazu einen einfachen weg oder muss ich wirklich noch perl installieren auf meinem raspberry pi :(
Danke im Voraus,
Kermit
0 commentaires:
Enregistrer un commentaire