Textstellen mir sed ausschneiden

Antworten
Nachricht
Autor
Seddist

Textstellen mir sed ausschneiden

#1 Beitrag von Seddist » 28. Dez 2007 21:10

Hallo,

ich habe mehrere Zeilen, in denen immer, mitten im Text, ein Muster vorkommt, daß so grob so aussieht: val=3241
Die Zahlen sind natürlich nicht konstant, haben aber immer vier Stellen. Jetzt würde ich gerne genau dieses Muster ausschneiden und den Rest vor- und hinterher wegschneiden.

Beispiel

Code: Alles auswählen

#echo "Bauer Ernst kauft für?val=3241öfter mal Kühe ein" | sed 'black_magic' 
# val=3241
Leider ist nicht garantierbar, daß vor oder hinter dem val ein Leerzeichen ist.

komsomolze
Beiträge: 430
Registriert: 03. Mär 2006 23:16

#2 Beitrag von komsomolze » 28. Dez 2007 22:33

Code: Alles auswählen

sed  's@.*\(val=[0-9]{4}\).*@\1@'
?
mfg komsomolze

seddist

#3 Beitrag von seddist » 29. Dez 2007 12:52

Danke, aber das funktioniert leider nicht.

Ob ich nun einen

Code: Alles auswählen

# cat dateiname 
oder

Code: Alles auswählen

# cat dateiname | sed  's@.*\(val=[0-9]{4}\).*@\1@'
mache, die Ausgabe bleibt exakt die gleiche. sed scheint in diesem Falle gar nichts zu machen

seddist

#4 Beitrag von seddist » 29. Dez 2007 13:19

Die geschweiften Klammern müssen noch escaped (wie ist denn das deutsche Wort dafür?) werden, dann klappt es.

Code: Alles auswählen

sed  's@.*\(val=[0-9]\{4\}\).*@\1@'
Vielen Dank & guten Rutsch!

Antworten