用终端上的JQ打印彩色原始输出



我正在尝试在终端上打印报告。该报告是JSON,我将其作为RAW JQ输出在终端上打印。

我正在尝试为

线上的几个值的输出上色
echo -e "33[31m Hello World"

但无法做到。

当我做类似下面的事情

echo '[{"value": "New", "onclick": "Ready"},{"value": "Old", "onclick": "Stopped"}]' | jq -r  '.[] | "n", .value, .onclick '

它打印

准备就绪

停止

因此,它了解 n新的行字符但是我想拥有这样的东西

new(以粗体和红色(

准备就绪

旧(以粗体和红色为

停止

使其更可读

此插图应该足以使您越过障碍:

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)

最新更新