
Hallo, Am Tue, 29 Aug 2017, Harald Stürmer schrieb:
Am Dienstag, 29. August 2017, 08:48:30 CEST schrieb K. Elo:
Ich habe eine Textdatei, in der bestimmte Werte mit Escape-Sequenzen für Farben markiert sind. D.h. wenn ich die Datei in Konsole z.B. mit 'cat' ausdrucken, werden diese Werte farblich dargestellt.
Nun sollte ich alle rot markierten Werte herausfiltern, am liebsten mit 'awk'/'sed'. Ich stehe hier etwas auf dem Schlauch und kann nicht herausfinden, wie ich das tun kann. Das Format an sich ist einfach:
<Farben-Escapes für rot>WERT<leerzeichen>
grep -Po '\\033\[31m.*?\b' file wobei \\033\[31m der Farbcode wäre.
Genauer: die Escapesequenz ist ESC [ $parameter m also z.B.: printf '\e[31mfoo\e[0mbar\n' Oder auch (und das wird durch obige RE für grep z.B. nicht gefunden: printf '\e[31;42mfoo\e[0mbar\n' $parameter dürfen auch mehrere, durch ';' getrennte Codes sein, erst das 'm' schließt die Sequenz dann ab. Wie genau die Sequenz _angegeben_ werden muß, damit das jew. Programm die Sequenz richtig an das Terminal schickt variiert je nach Programm und Quoting der Sequenz. Und diese ganze Escapecodes sind in einer oft übersehenen manpage, nämlich 'man 4 console_codes' dokumentiert. Obige Farbcodes z.B. unter ==== ECMA-48 Set Graphics Rendition The ECMA-48 SGR sequence ESC [ parameters m sets display attributes. [..] 31 set red foreground ==== Ansonsten siehe die manpages der Shell bzgl. Quoting, und man 7 regex und 'man perlre' bzgl. wie dann die Regex für grep/sed/awk aufzubauen ist und natürlich die manpages zu grep/sed/awk. PS: gelegentlich will man diese Sequenzen aus einer Datei wieder raushaben, dabei hilft "ansifilter" -dnh -- When I was a boy all our networks Were for hauling in fish from the sea-- Our bawd rate was eight bits an hour (and she was worth it!), And our IP address was just three. And you kids who complain that the World Wide Web Is too slow oughtta cut out your bitching, 'Cause when I was a boy every packet Was delivered by carrier pigeon. -- Frank Hayes -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org