Extraktion nach Muster

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
TheWooder
Beiträge: 1
Registriert: 02.01.2005 11:02:23

Extraktion nach Muster

Beitrag von TheWooder » 16.01.2008 12:12:42

Hallo,

ich habe Eingabedaten in folgender Form:

blablablaMERKMAL134723MERKMAL2blablabla
blublbublubblubMERKMAL125844545MERKMAL2blubblubblub

Die zu extrahierenden Daten stehen zwischen MERKMAL1 und MERKMAL2. Ich suche nun eine Möglichkeit, wie ich nur die Daten extrahieren kann, möglichst in Form eines Shell-Skrips. Die Ausgabe sollte bei obiger Eingabe also lauten:

34723
25844545

Ich komme da bisher auf keinen grünen Zweig. Hat jemand eine Lösung? Abstrakter formuliert: Ich möchte in einer Eingabedatei nach regulären Ausdrücken suchen und NUR die Matches (nicht die kompletten Zeilen) ausgeben.

Vielen Dank!

Benutzeravatar
finupsen
Beiträge: 1327
Registriert: 21.04.2004 20:07:05
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Dortmund
Kontaktdaten:

Beitrag von finupsen » 16.01.2008 13:13:38

hallo,

> Die zu extrahierenden Daten stehen zwischen MERKMAL1 und MERKMAL2.

Code: Alles auswählen

echo "blublbublubblubMERKMAL125844545MERKMAL2blubblubblub" | \
 sed -e 's/.*MERKMAL1\(.*\)MERKMAL2.*/\1/'
Niemand hat vor eine zentrale Datensammelbehörde aufzubauen. Es handelt sich vielmehr um dezentrale IT-Systeme die miteinander vernetzt werden.
... und Wasser ist naß.

fuzzy
Beiträge: 1021
Registriert: 04.10.2003 12:15:52

Beitrag von fuzzy » 16.01.2008 18:13:37

Hallo TheWooder,

erstmal Herzlich Willkommen hier im Forum! :wink:

finupsen hat gleich die elegantere Möglichkeit genannt, zum "herantasten" ist es auch mögich,
erst bis MERKMAL1 durch "nix" zu ersetzen und dann ab MERKMAL2 durch "nix" zu ersezten.

Code: Alles auswählen

sed 's/.*MERKMAL1//;s/MERKMAL2.*//'
http://de.linwiki.org/wiki/Linuxfibel_- ... euge_-_Sed

Gruß fuzzy

Antworten