Frage SED: Wie kann ich jede Zeile nach der ersten Instanz der Zeichenfolge mit Sed drucken?


Ich habe eine Datei mit einem ähnlichen Format ...

16:28 asdfasdf
16:29 4398upte
16:30 34liuthr
16:31 34tertio

Wie kann ich mit SED jede Zeile einschließlich und nach der Zeile mit "16:30" ausdrucken?

Das Ergebnis wäre ...

16:30 34liuthr
16:31 34tertio

Im Moment verwende ich sed wie folgt, aber ich muss die Zeilennummer der ersten Zeile manuell finden, z. "562697":

sed -n '562697,$p'

4
2018-03-06 22:42


Ursprung




Antworten:


Adressen in sed können entweder Zeilennummern oder Muster sein. Versuche dies:

sed -n '/16:30/,$p'

Wenn das Muster a enthält /, Sie können es mit einem entkommen \. Zum Beispiel nach suchen 16/30 Anstatt von 16:30, Versuche dies:

sed -n '/16\/30/,$p'

7
2018-03-06 22:48



Was, wenn ich 16/30 suchen müsste? Ich bin nicht sicher, wie man die Syntax in diesem Fall ändert. Vielen Dank! - barrrista
@barrrista Ich habe meine Antwort bearbeitet, um zu zeigen, wie man dem Charakter mit einem Backslash entkommen kann. Hoffe das hilft. - Nicole Hamilton


Verwenden Sie einen regulären Ausdruck in der Adresse:

sed -n '/^16:30/,$p'

oder

sed '/^16:30/,$!d'

5
2018-03-06 22:47