frage zu sed

flyingt

Member
hi ,

verwende die anweisung:

Code:
sed '/Verbindung/,/gute Reise/ d' file.log

um aus einem text einen gewissen teil heraus zu filtern. Nun gibt es mehrer textabschnitte welche mit "Verbindung" anfangen und mit "gute Reise" enden.
würde gerne meiner shell-anweisung sagen das sie nur den erste TREFFER nehmen soll ???

über eine kurze hilfestellung bin ich dankbar

gruß flyingt
 

flyingt

Member
ich dank dir für deine anregung, aber hab leider nicht die zeit mich jetzt da rein zulesen. denke ist das nächste was ich in angriff nehme. wenn sich mein problem irgendwie mit "sed" lösen läßt ohne das ich den text einzeln auseinander nehmen muß wäre ne feine sache.

gruß flyingt
 

ninguno

Member
hab ich das richtig verstanden, du willst die 1. zeile ausgeben die "Verbindung" und "gute Reise" enthält? das ginge mit awk einfacher:
Code:
|awk '/Verbindung/&&/gute Reise/ {print;exit}'
 

TeXpert

Guru
es geht genauso mit sed

Code:
sed -e '/^foo/,/bar$/{ q}' foobarfile.txt
und in das {} können auch noch weitere commands rein, aber...


irgendwie bin ich über flyingt verwundert, hat 0-Ahnung von sed (zumindest schließe ich das aus den 100-sed-Fragen der letzten Zeit... will aber auch keine andere (einfachere) Sprache nutzen die er auch nicht kennt... hmmm

zudem kommen mir die Fragen immer mehr wie eine akute 'ich-bin-zu-faul-zum-googeln-und-tutorials-lesen' Krankheit vor...
 

flyingt

Member
TeXpert schrieb:
zudem kommen mir die Fragen immer mehr wie eine akute 'ich-bin-zu-faul-zum-googeln-und-tutorials-lesen' Krankheit vor...

ist nicht so das ich mich überhaupt nicht reinlese und versuche eine lösung zu finden, werde meistens auch fündig, was aber leider über fünf ecken bei der realisierung zum erfolg führt.
frag meistens im forum nach um eine eleganter lösung zu erhalten.

denke mir, das meine fragen simpel zu beantworten sind und ich nicht all zu sehr kostbare zeit für mich beanspruche. mir damit ein wenig zeit ersparen und vieleicht anderen leuten welche sich ebenfals ein wenig doof anstellen helfe.

danke nochmal für die hilfe
 

flyingt

Member
ninguno schrieb:
hab ich das richtig verstanden, du willst die 1. zeile ausgeben die "Verbindung" und "gute Reise" enthält?

der text geht über mehrere zeilen,
und deshalb funktioniert dieses
Code:
sed -e '/^foo/,/bar$/{ q}' foobarfile.txt
leider nicht.



bsp :
.....
Verbindung um ....
.....
gute Reise
......
Verbindung um .....
......
gute Reise
......


wie gesagt , hätte halt gerne nur den ersten abschnitt


Verbindung um ......
......
gute Reise


hab jetzt dem string "Verbindung" durch nummern ersetzt 1,2,3 und komme somit zum ziel, bin gerne an eleganten umsetzungen interessiert !!!

gruß flyingt
 

TeXpert

Guru
flyingt schrieb:
ninguno schrieb:
hab ich das richtig verstanden, du willst die 1. zeile ausgeben die "Verbindung" und "gute Reise" enthält?

der text geht über mehrere zeilen,
und deshalb funktioniert dieses
Code:
sed -e '/^foo/,/bar$/{ q}' foobarfile.txt
leider nicht.

dann solltest Du in Zukunft vernünftige Bespieldaten produzierne... so verschwendest Du nur Zeit...

dass könnte man dan z.B. so lösen:.
Code:
$ sed -n -e '/^verbindung/,/gute reise$/p' -e '/gute reise$/q' foo.txt
 
Oben