![正在执行`yq`,但`jq`被执行](https://linux22.com/image/230735/%E6%AD%A3%E5%9C%A8%E6%89%A7%E8%A1%8C%60yq%60%EF%BC%8C%E4%BD%86%60jq%60%E8%A2%AB%E6%89%A7%E8%A1%8C.png)
我很困扰。
我安装了 Debian 软件包yq
但如果我调用它,jq
就会被执行:
root@rescue ~ # echo '{"key": "value"}' | yq -p=json
jq: Unknown option -p=json
Use jq --help for help with command-line options,
or see the jq manpage, or online docs at https://stedolan.github.io/jq
root@rescue ~ # cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"
NAME="Debian GNU/Linux"
VERSION_ID="12"
VERSION="12 (bookworm)"
VERSION_CODENAME=bookworm
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
答案1
在 Debian 上yq
是一个围绕jq
.
我期待这个yq
工具:https://github.com/mikefarah/yq
root@rescue ~ # apt show yq
Package: yq
Version: 3.1.0-3
Priority: optional
Section: utils
Maintainer: Debian Python Team <[email protected]>
Installed-Size: 73,7 kB
Depends: jq, python3-argcomplete, python3-toml, python3-xmltodict, python3-yaml, python3:any
Homepage: https://github.com/kislyuk/yq
Download-Size: 19,2 kB
APT-Manual-Installed: yes
APT-Sources: http://mirror.hetzner.com/debian/packages bookworm/main amd64 Packages
Description: Command-line YAML processor - jq wrapper for YAML documents
以下是安装 Mike Farah 的 yq 的说明:https://github.com/mikefarah/yq/?tab=readme-ov-file#install
答案2
YAML 解析器有两种主要实现,称为yq
.
迈克·法拉赫
yq
,这是用 Go 编写的实用程序。 Mikeyq
还具有解析 XML 和其他一些常见结构化文档格式的内置功能。这种实现yq
在 Linux 系统上很常见,但 Debian 显然选择了 Andrey 的实现yq
。
通用安装说明:https://github.com/mikefarah/yq/#install安德烈·基斯柳克
yq
是一个用 Python 编写的实用程序,它在内部将 YAML 转录为 JSON,然后将众所周知的jq
处理器应用于转换后的输入。 Andreyyq
还发布了一些其他工具,用于使用表达式语法处理 XML (xq
) 和 TOML (tomlq
) 。jq
这种实现yq
在非 Linux 系统上很常见。
通用安装说明:https://kislyuk.github.io/yq/#installation
该命令yq -p=json
(读取 JSON 输入;请注意,JSON 是 YAML 的子集)yq -P
与使用 Mike 的yq
.对于 Andrey 的,使用(生成 YAML 输出)yq
具有相同的效果。yq -y
在过去的几年里,Mike'syq
已经开始更改其表达式语法,使其更像 Andrey's yq
,可能是因为 的表达式语法jq
现在已经非常众所周知了。对于简单表达式,这两个 YAML 解析器可能可以互换使用,但它们在更复杂的表达式和命令行选项方面大多不兼容。