Ich benutze Grep von der Kommandozeile über Cygwin. Ich frage mich, ob es irgendeinen Weg gibt, um den Teil jeder Zeile hervorzuheben, der mit der Regex übereinstimmt. Die nächste Sache, die ich sehe, ist die Option -o, aber das gibt nur den passenden Bereich aus, und ich möchte die gesamte Linie sehen.Kann grep (über die Befehlszeile) so eingestellt werden, dass der Teil der Zeile markiert wird, der übereinstimmt?
Antwort
Take a look bei der Option --color (oder), z.
grep --color POST access_log
verwendet standardmäßig das den „Auto“ -Modus, der nur die Codes Farbe enthält, wenn die Ausgabe an einen Terminal, aber nicht, wenn Sie die Ausgabe mittels Pipelining an anderer Stelle. Wenn Sie möchten, dass die Farben auf etwas anderes als stdout ausgegeben werden, verwenden Sie --color = immer
Sehen Sie die linked article für Möglichkeiten, wie Sie die Farbe ändern und Grep diese Option standardmäßig verwenden können.
Probieren Sie den Schalter --color aus.
Wow. jetzt sicher, wie ich das vermisst habe. Eine zusätzliche Frage. Gibt es eine Möglichkeit, die Farbe beizubehalten, wenn man Greife kettet? Ich habe einen Grep zu suchen, einen zweiten zu filtern, um einige Übereinstimmungen herauszufiltern, die ich nicht sehen will. Irgendeine Möglichkeit, die Farbe vom ersten Grep zu erhalten? – Herms
Ich habe meine Antwort mit einem möglichen Weg aktualisiert, wie Sie das tun könnten. –
Sie könnten versuchen, die ack tool. Es führt die Hervorhebung standardmäßig aus, iirc.
Eigentlich tut es viele nützliche Dinge standardmäßig. Manche Leute mögen es und ich hoffe, du wirst es auch tun.
Ich habe die --color = immer hinzugefügt, aber das scheint die Chained Greps zu unterbrechen, wahrscheinlich weil die Farbkontrollzeichen von den Regexen aufgenommen werden. Die Lösung, die mir einfiel, war, das erste grep in der Kette am Ende mit der Option --color zu wiederholen. Ich verliere die Färbung der Dateinamen, aber es färbt immer noch die Übereinstimmung, die der wichtige Teil ist. – Herms