awk -F: '{ printf "%-3s %-2s","\n" $1 $2; }'
Wie füge ich Farbcode hinzu? '\ E [1; 32m'awk Farbcode zum Text hinzufügen
Ich versuche in printf das Hinzufügen, es gib mir Ausgabe des Strings statt Farbcode ..
'\e[1;32m' .......
awk -F: '{ printf "%-3s %-2s","\n" $1 $2; }'
Wie füge ich Farbcode hinzu? '\ E [1; 32m'awk Farbcode zum Text hinzufügen
Ich versuche in printf das Hinzufügen, es gib mir Ausgabe des Strings statt Farbcode ..
'\e[1;32m' .......
awk
nicht erkennt '\ e' als Code für das Escape-Zeichen. Hier ist eine Behelfslösung (etwas elegantere existieren):
# Decimal 27 is the ASCII codepoint for the escape character
awk '{ printf "%c[1;32m foo\n", 27 }' <<<foo
Hmm .. wie kann ich damit codieren? – user1745860
Wie wäre es ... mit \ 033 anstelle von \ – GottZ
Ich vergesse immer die oktalen Escape. – chepner
awk 'BEGIN{print "^[[1;33mYELLOW"}'
Zeichenfolge YELLOW in Gelb gedruckt werden würde (Farbe)
HINWEIS die erste ^[
Sie haben ctrl-v
geben Sie dann ESC
Ich würde einen Screenshot hinzufügen, um zu zeigen.
der Screenshot oben zeigte, dass es unter zsh und bash gearbeitet.
Hoffe das hilft jedem auf der Suche nach einer Antwort!
Wie Sie sehen können, die Funktionen und verschiedene Initialisierung ermöglicht es, eine ganz einfache Druckzeile wie folgt zu schreiben.
print colour("Red")$1colour("Blue")$0colour("None");
Für die colour
Funktion können Sie in der Integer-Wert der Farbe oder den Namen passieren entweder. Es benötigt Parameter in den folgenden Formaten.
colour(<attribute> , <background-colour> , <foreground-colour>)
colour(<background-colour> , <foreground-colour>)
colour(<foreground-colour>)
Sie können selektiv die erforderlichen Parameter angeben.
function isnumeric(x)
{
return (x == x+0);
}
function name_to_number(name, predefined)
{
if (isnumeric(name))
return name;
if (name in predefined)
return predefined[name];
return name;
}
function colour(v1, v2, v3)
{
if (v3 == "" && v2 == "" && v1 == "")
return;
if (v3 == "" && v2 == "")
return sprintf("%c[%dm", 27, name_to_number(v1, fgcolours));
else if (v3 == "")
return sprintf("%c[%d;%dm", 27, name_to_number(v1, bgcolours), name_to_number(v2, fgcolours));
else
return sprintf("%c[%d;%d;%dm", 27, name_to_number(v1, attributes), name_to_number(v2, bgcolours), name_to_number(v3, fgcolours));
}
BEGIN {
# hack to use attributes for just "None"
fgcolours["None"] = 0;
fgcolours["Black"] = 30;
fgcolours["Red"] = 31;
fgcolours["Green"] = 32;
fgcolours["Yellow"] = 33;
fgcolours["Blue"] = 34;
fgcolours["Magenta"] = 35;
fgcolours["Cyan"] = 36;
fgcolours["White"] = 37;
bgcolours["Black"] = 40;
bgcolours["Red"] = 41;
bgcolours["Green"] = 42;
bgcolours["Yellow"] = 43;
bgcolours["Blue"] = 44;
bgcolours["Magenta"] = 45;
bgcolours["Cyan"] = 46;
bgcolours["White"] = 47;
attributes["None"] = 0;
attributes["Bold"] = 1;
attributes["Underscore"] = 4;
attributes["Blink"] = 5;
attributes["ReverseVideo"] = 7;
attributes["Concealed"] = 8;
}
{
print colour("Red")$1colour("Blue")$0colour("None");
}
\033[?m
richtig zitiert gibt Farbe:
awk 'BEGIN{ print "\033[34msomething in colour\033[0m";}'
Hinweis, wie man $1
unten an unescape benötigt:
echo something | awk '{ print "\033[34m"$1" in colour \033[0m";}'
BDF()
{
#awk 'BEGIN{ print "\033[34msomething in colour\033[0m";}'
#bdf $spool $data $sysout ~ /home/fnsonlh |grep -v avail| awk '{print $5" "$4" "}' | tail -n +2 |tr -d "\012"
bdf $spool $data $sysout ~ /home/fnsonlh |grep -v avail| awk '{if($4 > 89)
{
print "\033[0;31m"$5" "$4"\033[0m "
}
else
{
print "\033[0;32m"$5" "$4"\033[0m "
}}' |tail -n +2 |tr -d "\012"
#"\012 is new line caracter"
echo
#/usr/bin/w -u
uptime
}
#[email protected]
Code-only Antworten sind in der Regel verpönt.Bitte bearbeiten Sie Ihre Antwort, um eine Beschreibung zu enthalten, was der Code macht und wie er die Frage beantwortet. –
Macht das Farbcode Arbeit mit einem normalen 'echo'? – Shahbaz