Es gibt eine ähnliche Frage in Preserve ls Farbe nach dem Grep'ing, aber es ärgert mich, dass die Farbe nicht erhalten bleibt, wenn Sie farbige Grep-Ausgaben in ein anderes Grep leiten .
Als Beispiel grep --color WORD * | grep -v AVOID
wird die Farbe der ersten Ausgabe nicht beibehalten. Aber für mich ls | grep FILE
behalten Sie die Farbe, warum der Unterschied?
Antworten:
grep
Deaktiviert manchmal die Farbausgabe, z. B. beim Schreiben in eine Pipe. Sie können dieses Verhalten mit überschreibengrep --color=always
Die richtige Kommandozeile wäre
Dies ist ziemlich ausführlich, alternativ können Sie einfach die Zeile hinzufügen
zu deinem
.bashrc
zum Beispiel undcgrep
als farbiges grep verwenden. Bei der Neudefinitiongrep
können Probleme mit Skripten auftreten, die auf einer bestimmten Ausgabe vongrep
ASCII-Escape-Code beruhen und diesen nicht mögen.quelle
grep
.alias grep='grep --color=auto
Ich muss also nur meine~/.bashrc
Position ändern, wo sie ursprünglich definiert wurde.Ein Ratschlag:
Bei Verwendung
grep --color=always
werden die tatsächlichen Zeichenfolgen, die an die nächste Pipe weitergegeben werden, geändert. Dies kann zu folgender Situation führen:Obwohl die Option
-ve '12'
die mittlere Zeile ausschließen sollte, wird dies nicht der Fall sein, da zwischen1
und Farbzeichen stehen2
.quelle
--color=auto
, sollte es die Tatsache aufgreifen, dass Sie es an eine andere Stelle leiten, und Farben insgesamt unterdrücken, aber es macht den Zweck irgendwie zunichte. Wenn Sie immer noch farbige Ergebnisse wünschen, können Sie diese bei der letzten Pipe erneut verwenden--color
.--color=always
funktioniert, nehme ich an, mit den oben genannten Vorbehalten.Wiederholen Sie einfach den gleichen grep-Befehl am Ende Ihrer Pipe.
grep WORD * | grep -v AVOID | grep -v AVOID2 | grep WORD
quelle
grep -v AVOID * | grep WORD