正在执行`yq`,但`jq`被执行

正在执行`yq`,但`jq`被执行

我很困扰。

我安装了 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.

  1. 迈克·法拉赫yq,这是用 Go 编写的实用程序。 Mikeyq还具有解析 XML 和其他一些常见结构化文档格式的内置功能。这种实现yq在 Linux 系统上很常见,但 Debian 显然选择了 Andrey 的实现yq
    通用安装说明:https://github.com/mikefarah/yq/#install

  2. 安德烈·基斯柳克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 解析器可能可以互换使用,但它们在更复杂的表达式和命令行选项方面大多不兼容。

相关内容