Wenn Sie die Zeichenfolge "Hello, \e[38;5;200mworld\e[0m
" drucken, wird möglicherweise "Hello, world
" mit dem Wort "world
" eine starke Magentafarbe (FF00DF) angezeigt, vorausgesetzt, Ihr Terminal unterstützt es.Wie ignorierst du aber ANSI-Escape-Codes mit sed?
Wenn Sie jedoch die Ausgabe eines Programms wie tree
an column
übergeben, sehen Sie, dass die Ausrichtung unterbrochen ist, da die Escape-Codes in Zeilenlängenberechnungen falsch gezählt werden.
Als ein direkteres Beispiel habe ich versucht, die Zeichenfolge von Schriftzeichen in Sed mit dem folgenden aufzuspalten:
sed 's/\(.\)/\1 /g'
... ..., die
H e l l o , 3 8 ; 5 ; 2 0 0 m w o r l d 0 m
ergibt ... wenn die zuvor gezeigte Zeichenfolge gepiped wurde.
Wie würden Sie bei der Bearbeitung eines Streams nach passenden Escapecodes zum Zählen, Ersetzen, Bewahren usw. suchen?
Warum würden Sie 'tree' Ausgabe an' column' übergeben. Wenn Sie die Einfärbung deaktivieren ('tree -n | column'), erhalten Sie die gewünschte Ausgabe (außer dem Farbteil)? – anishsane
Ich nicht; Die Farbe ist jedoch immer noch sichtbar, also vermute ich, dass einer meiner Aliasnamen interferiert. Ich übertrage viele Dinge in die Spalte, wenn es zu viel Ausgabe gibt, um ohne Scrollen zu sehen, was in einem gemultiplexten Terminal bedeutet, dass ich nicht ständig hin und her schalten muss. Natürlich kann ich einen unfokussierten Bereich scrollen und mein Original fokussiert lassen, aber das Scrollen bedeutet immer noch das Bewegen der Maus. Bin ich nicht faul? –