Sed: nach erstem finden stoppen

Hallo Leute,

ich möchte mit sed die erste Zeile ausgeben in der ein bestimmtes Wort auftaucht, nennen wir es mal wort.

Mein bisherige Errungenschaft schreibt jedoch alle Zeilennummern hintereinander weg in denen wort vorkommt… Ich möchte aber nur die erste Zeile wissen!

var=$(sed -n ‚/wort/=‘ file)

Gruß,
Peter

wenn es nicht unbedingt sed sein muss:

var=$(cat file | grep -m1 wort)

evtl.:
http://qtao.de/sed/

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Klaus,

wenn es nicht unbedingt sed sein muss:
var=$(cat file | grep -m1 wort)

Ich habe auch zuerst an grep gedacht, aber er will die Zeilennr. wissen…

http://qtao.de/sed/

Die Kurzreferenzen dort sind ganz brauchbar, habe mir gleich was ausgedruckt, erspart einem das Nachschlagen. Vergesse immer wieder was, ja das Alter :frowning:

Viele Grüße
Marvin

Hallo Peter,

ich möchte mit sed die erste Zeile ausgeben in der ein

bestimmtes Wort auftaucht, nennen wir es mal wort.

Mein bisherige Errungenschaft schreibt jedoch alle
Zeilennummern hintereinander weg in denen wort vorkommt… Ich
möchte aber nur die erste Zeile wissen!

Was spricht gegen

var=$(sed -n '/wort/=' file | head -n 1)

Viele Grüße
Marvin

Hallo Peter

ich möchte mit sed die erste Zeile ausgeben in der ein
bestimmtes Wort auftaucht, nennen wir es mal wort.

Mein bisherige Errungenschaft schreibt jedoch alle
Zeilennummern hintereinander weg in denen wort vorkommt… Ich
möchte aber nur die erste Zeile wissen!

var=$(sed -n ‚/wort/=‘ file)

man kann sed auch mehrere Kommandos mitgeben (das Kommando ‚q‘ beendet z.B. die aktuelle Verarbeitung). Deine Lösung nur mit sed wäre dann also:

var=$(sed -n '/wort/=;/wort/q' file)

Gruss
bernhard