Ich finde viele Beiträge in diesem Forum, die damit zu tun haben, verschiedene Werte in einer Textdatei zu finden und Text auszugeben, der sie umgibt. Ich finde jedoch keine "Stream-orientierten".
Ich möchte eine bestimmte Zeichenfolge in einer Datei finden und nur den darauf folgenden Text ausgeben , bis das Ende der Datei erreicht ist. Mit anderen Worten, ich möchte etwas, das sich wie ein Filter verhält, der den Text in einer Datei ignoriert, bis ein bestimmter Zeichenfolgenwert erreicht ist, und von diesem Punkt an Text bis zum Ende der Datei an stdout ausgibt . Ich möchte stdout verwenden, damit ich die Ausgabe in eine Datei leiten kann, wenn ich dies wähle.
Gibt es ein Linux-Textdienstprogramm, das mir dabei hilft, und wenn ja, wie? Oder wenn ich dazu ein Bash-Shell-Skript schreiben muss, welche allgemeinen Schritte und Befehlszeilenprogramme würde ich dazu verwenden?
Beispiel: Eine Beispieldatei unten:
one
two
three
four
five
Angenommen, ich wollte den gesamten Text nach den "drei" ausgeben, damit das Ergebnis lautet:
four
five
HINWEIS: Ich habe diesen scheinbar verwandten Beitrag gefunden, aber wie Sie sehen, ist er ein bisschen chaotisch:
Antworten:
Verwendung
awk
:oder
s;
druckt die Zeile, wenn die Variables
wahr ist. Dies ist das erste Mal, nachdem das Muster / Wort gefunden wurde .../^three$/{s=1}
setzt die Variables
auf true (1), wenn Muster / Wort gefunden wird.quelle
Mit GNU
sed
:Beachten Sie, dass Linux ein Kernel ist und keine Dienstprogramme enthält. GNU
sed
ist diesed
Implementierung, die häufig auf GNU / Linux-Systemen wie Debian GNU / Linux zu finden ist. GNU istsed
älter als Linux und wurde für die Ausführung auf den meisten Unix-ähnlichen Systemen kompiliert, einschließlich der meisten, auf denen Linux als Kernel ausgeführt wird. Es handelt sich selbst um eine Neuimplementierung von Free, Libre und OpenSource (mit einigen Erweiterungen einschließlich dieser0
Adresse) des UNIX-sed
Dienstprogramms aus den späten 70er Jahren.quelle
Mit POSIX sed können Sie Folgendes tun:
Verwenden von Perl:
quelle