Mit sed alle Zeilen mit Muster und Ende der Datei anzeigen lassen

FatManStanding

Lt. Junior Grade
Registriert
Aug. 2021
Beiträge
487
Hallo,

ich möchte in einem Script alle Zeilen zwischen der Zeile mit einem bestimmten Muster und dem Ende der Datei anzeigen lassen. Das Muster wird durch eine Variable an sed übergeben. Ohne Variable geht es so:

Code:
sed -n '/muster/,$p' datei

Setze ich statt "muster" eine Variable ein wird diese wegen der einfachen Quotes nicht aufgelöst. Mit Doppelquotes geht das aber nicht, da kommt:

Code:
sed: -e Ausdruck #1, Zeichen 34: Unerwartetes »,«

Wie mache ich das hier? Mir wäre sed lieb statt z. B. awk weil ich bei sed wenigstens etwas kann, bei awk null.
 
Das liegt daran, dass die Shell (nicht sed) dann auch $p als Variable interpretiert.
sed -n "/muster/,\$p" datei

xpad
 
Hast das Muster Sonderzeichen?
 
Für solche Fragen wie nach einer vollständigen Befehlszeile kann ChatGPT oder Copilot auf Bing.de sehr hilfreich sein.
 
@GrillSgt .. hier gehts uU um lernen durch verstehen

@FatManStanding - das coole an Unix ist ja die Idee Ein udn Ausgabe zu verknüpfen - Tee und Pipe sind immer noch schöne Ideen,

der Inhalt(!) der Variable könnte ja auch aus dem Eingabekanal gelesen werden - da wird es doch weiteren Shell-/Umcode geben oder?
 
@dms: Lernen durch verstehen ist auch wenn er Copilot oder ChatGPT fragt was genau welcher Parameter tut. Musst halt dem Teil nur die richtigen Fragen stellen.

Früher musste man ausführlich suchen / googlen, heute kann einem dabei die KI helfen viel schneller zum Ziel zu kommen.
 
Bin ich bei dir, gegen Manpages ist nichts einzuwenden, aber ich bin auch ein Fan davon, dass man zu schnellen Erfolgen kommt. Insbesondere bei sed kann es schnell frustig werden wenn man nicht zum Ziel kommt. Und erhrlich gesagt hätte ich mir sowas wie GPT gewünscht als ich 1999 das Erste Mal ne Linuxmühle installiert habe.
 
Zurück
Oben