Ich habe einen ähnlichen Beitrag mit dem Titel "Drucken Zeilen mit einem Muster nur dann, wenn die nächste Zeile stimmt nicht mit dem Muster" für die die Lösung erwähnt istawk: Zeilen mit einem Muster nur dann drucken, wenn die nächste Zeile auch mit dem gleichen Muster beginnt
awk 'a=/^O/{x=$0} !a&&x{print x;x=0;}' myfile
ich wollte nur wissen, wie würde der obige Befehl ändern, wenn ich alle Zeilen in einer Datei, deren nächste Zeile zu beginnen mit dem gleichen Muster wie die aktuelle Zeile gedruckt werden soll.
beispiel
Datei Text enthält:
abc this is a line
def
abc this is line 2
ghi
abc this is line 3
abc this is line 4
jkl
mno
abc this is line 5
jkl
abc this is line 6
abc this is line 9
jkl
der Befehl sollte so beschaffen sein, dass nur folgende Zeilen gedruckt werden sollen:
abc this is line 3
abc this is line 6
Jede Hilfe sehr würde geschätzt.
Danke an alle, die geholfen haben. Original-Frage ein bisschen hier zu bearbeiten, um die Anforderung zu erfüllen, da das Folgende nicht hilft, wenn es mehrere ähnliche Linien gibt.
Was wäre der Befehl awk, wenn alle Zeilen in einer Datei, so dass die nächste Zeile mit einem anderen Muster endet, gedruckt werden sollen.
Z. B: wenn Datei enthält:
Student name is A
Student name is B
Student name is C
result for C is pass
Student name is D
result for D is pass
Student name is E
result for E is pass
Student name is F
result for F is pass
Student name is G
result for G is pass
Student name is H
Student name is I
result for I is pass
Wie kann ich awk verwenden, um alle Zeilen mit Schülernamen zu drucken, wo die Schüler passieren nicht. So zum obigen Beispiel der Linien gedruckt werden soll:
Student name is A
Student name is B
Student name is H
Kann ich alle Zeilen drucken, die mit dem Student beginnen, wo ihre folgende Zeile mit der Zeichenfolge PASS nicht awk am Ende mit?
Was passiert, wenn 3 oder mehr aufeinanderfolgende Zeilen mit diesem Muster beginnen? –
Sie denken rückwärts darüber nach. Wenn du Spielkarten umdrehst und einen König umlegst, ist es schwierig, etwas zu tun, abhängig davon, ob deine nächste Karte ein Ass sein wird oder nicht, weil du deine nächste Karte noch nicht gesehen hast. Auf der anderen Seite, wenn Sie ein Ass umdrehen, ist es sehr einfach, etwas zu tun, wenn Ihre vorherige Karte ein König war, weil Sie es bereits gesehen haben. Die gleichen 2 Karten in der gleichen Reihenfolge, aber THINKING darüber anders zeigt Ihnen eine harte Lösung und eine einfache Lösung. Vermeide es, Dinge basierend auf dem, was als nächstes kommt, zu tun, wenn du es basierend auf dem, was vorher kam, tun kannst. –