Wie grep das Letzte vorkommen einer Linie Muster
Ich habe eine Datei mit dem Inhalt
x
a
x
b
x
c
Möchte ich grep das Letzte vorkommen,
x
c
wenn ich versuche
sed -n "/x/,/b/p" file
listet alle Zeilen, beginnend x
zu c
.
- So Sie drucken möchten, aus den letzten
x
bis zum Ende? - soweit ich weiß, sed manipuliert jede Zeile separat. ("Die Befehle, die Sie geben es sind auf jede Zeile der Eingabe in turn" - Zitat aus en.flossmanuals.net/command-line/sed)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin mir nicht sicher, wenn ich Ihre Frage richtig, so hier sind ein paar Aufnahmen im dunklen:
Drucken, die letzten vorkommen des
x
(regex):Alternativ:
Drucken Sie die Datei aus dem ersten übereinstimmenden Zeile zu Ende:
Drucken Sie die Datei aus der letzten passenden Zeile bis zum Ende (alle Zeilen ausgegeben, in diesem Fall keine übereinstimmung):
awk "/x/ { flag = 1 }; { if (flag == 1) print; }" txt
geschrieben werden können, einige mehr einfach wie diesesawk '/x/ {flag=1} flag' txt
tac
zu erleichtern, immer die Letzte Instanz ist genial! DankeKönnte dies für Sie arbeiten (GNU sed):
Speichert die letzten
x
- und was folgt, in der Raum und druckt es aus, Ende-der-Datei.nicht sicher, wie man es
sed
, aber Sie können versuchenawk
-A 1
sagt grep drucken einer Zeile nach einem match linemit
tail
bekommen Sie die letzten beiden Zeilen.oder Umgekehrt:
Hinweis: Sie sollten sicherstellen, dass Ihre Muster ist "stark" genug, so wird es Ihnen, die richtigen Linien. d.h., dass es mit
^
am start und$
am Ende.