bash - 在终端上使用 jq 打印彩色原始输出
问题描述
我正在尝试在终端上打印报告。该报告是 JSON,我将其作为原始 jq 输出打印在终端上。
我正在尝试为几个值的输出着色
echo -e "\033[31m Hello World"
但一直无法这样做。
当我做类似下面的事情时
echo '[{"value": "New", "onclick": "Ready"},{"value": "Old", "onclick": "Stopped"}]' | jq -r '.[] | "\n", .value, .onclick '
它打印
新的
准备好
老的
停止
所以它理解 \n 换行符,但我想要这样的东西
新(粗体和红色)
准备好
旧(粗体和红色)
停止
使其更具可读性
解决方案
这个插图应该足以让你克服障碍:
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)
推荐阅读
- amazon-web-services - Terraform 无法使用静态 S3 网站端点创建 CloudFront 的源
- android - 添加另一个活动时应用程序崩溃
- jsp - 如何使用 servlet 处理异常,以便如果用户在这种情况下将字段留空,它将采用默认值
- symfony - 用于相同 server_name 下的项目的 Nginx 配置
- c# - 管理自动滚动
- amazon-web-services - 使用 lambda 函数的 AWS 弹性搜索更改策略
- java - Client Server tcp reset 导致丢包
- javascript - 为什么我们还要在 html 中使用表单元素?
- python - 带有 Apache 光束 TypeError 的云发布/订阅
- c - 如何使用 gdb 将反汇编语法更改为 intel?