在终端上使用 jq 打印彩色原始输出
Print colored raw output with jq on terminal
我正在尝试在终端上打印一份报告。该报告是 JSON,我将其作为原始 jq 输出打印在终端上。
我正在尝试为
行上的一些值的输出着色
echo -e "3[31m Hello World"
但是一直做不到。
当我做下面的事情时
echo '[{"value": "New", "onclick": "Ready"},{"value": "Old", "onclick": "Stopped"}]' | jq -r '.[] | "\n", .value, .onclick '
它打印
New
Ready
Old
Stopped
所以它理解\n换行符
但我想要这样的东西
New (In Bold and Red Color)
Ready
Old (In Bold and Red Color)
Stopped
使其更具可读性
这个插图应该足以让你跨过障碍:
jq -n -r '
def colors:
{
"black": "\u001b[30m",
"red": "\u001b[31m",
"green": "\u001b[32m",
"yellow": "\u001b[33m",
"blue": "\u001b[34m",
"magenta": "\u001b[35m",
"cyan": "\u001b[36m",
"white": "\u001b[37m",
"reset": "\u001b[0m",
};
colors.red + "red" + colors.green + "green"
'
详细说明
# print $text in the specified color
def pc($text; color):
(colors | color) + $text + colors.reset;
# Usage example:
pc("red"; .red) + pc("green"; .green)
我正在尝试在终端上打印一份报告。该报告是 JSON,我将其作为原始 jq 输出打印在终端上。
我正在尝试为
行上的一些值的输出着色echo -e "3[31m Hello World"
但是一直做不到。
当我做下面的事情时
echo '[{"value": "New", "onclick": "Ready"},{"value": "Old", "onclick": "Stopped"}]' | jq -r '.[] | "\n", .value, .onclick '
它打印
New
Ready
Old
Stopped
所以它理解\n换行符 但我想要这样的东西
New (In Bold and Red Color)
Ready
Old (In Bold and Red Color)
Stopped
使其更具可读性
这个插图应该足以让你跨过障碍:
jq -n -r '
def colors:
{
"black": "\u001b[30m",
"red": "\u001b[31m",
"green": "\u001b[32m",
"yellow": "\u001b[33m",
"blue": "\u001b[34m",
"magenta": "\u001b[35m",
"cyan": "\u001b[36m",
"white": "\u001b[37m",
"reset": "\u001b[0m",
};
colors.red + "red" + colors.green + "green"
'
详细说明
# print $text in the specified color
def pc($text; color):
(colors | color) + $text + colors.reset;
# Usage example:
pc("red"; .red) + pc("green"; .green)