用于处理二进制数据的工具、语言和解码器。
TLDR:它的目标是将 jq、hexdump、dd 和 gdb 文件合并为一个。
基本用法是fq . file
、 fq d file
或fq 'some query' file ...
。
详细信息请参见usage.md。
fq 受到 jq 工具和语言的启发,允许您以相同的方式使用二进制格式。除了使用 jq 表达式之外,它还可以呈现解码的树结构、变换、切片和连接二进制数据。它还支持嵌套格式,并具有交互式 REPL,可自动完成函数和名称。
它最初设计用于查询、检查和调试媒体编解码器和容器,如 MP4、FLAC 和 JPEG,但后来扩展到支持各种格式,如可执行文件、数据包捕获(通过 TCP 重组)和序列化格式,如 JSON、YAML、XML 、CBOR、protobuf。此外,它还具有处理 URL、与十六进制相互转换、数字基数、搜索模式等功能。
aac_frame、adts、adts_frame、aiff、amf0、apev2、apple_bookmark、ar、asn1_ber、av1_ccr、av1_frame、av1_obu、avc_annexb、avc_au、avc_dcr、avc_nalu、avc_pps、avc_sei、avc_sps、avi、avro_ocf、bencode、 bitcoin_blkdat,bitcoin_block,bitcoin_script,bitcoin_transaction,位,bplist,bsd_loopback_frame,bson,字节,bzip2,caff,cbor,csv,dns,dns_tcp,elf,ether8023_frame,exif,fairplay_spc,适合,flac,flac_frame,flac_metadatablock,flac_metadatablocks,flac_picture, flac_streaminfo、gif、gzip、hevc_annexb、hevc_au、hevc_dcr、hevc_nalu、hevc_pps、hevc_sps、hevc_vps、html、icc_profile、icmp、icmpv6、id3v1、id3v11、id3v2、ipv4_packet、ipv6_packet、jp2c、jpeg、 json, jsonl, leveldb_descriptor, leveldb_log, leveldb_table, luajit, macho, macho_fat, markdown, matroska, midi, moc3, mp3, mp3_frame, mp3_frame_vbri, mp3_frame_xing, mp4, mpeg_asc, mpeg_es, mpeg_pes, mpeg_pes_packet, mpeg_spu, mpeg_ts、msgpack、负熵、nes、ogg、ogg_page、opentimestamps、opus_packet、pcap、pcapng、pg_btree、pg_control、pg_heap、png、prores_frame、protobuf、protobuf_widevine、pssh_playready、rtmp、sll2_packet、sll_packet、tap、tar、 tcp_segment、tiff、tls、toml、tzif、tzx、udp_datagram、vorbis_comment、vorbis_packet、vp8_frame、vp9_cfm、vp9_frame、vpx_ccr、wasm、wav、webp、xml、yaml、zip
它还可以处理一些常见的文本格式,如 URL、十六进制、base64、PEM 等,以及一些序列化格式,如 XML、YAML 等。它可以将 jq 值转换为 jq 值。
有关详细信息,请参阅formats.md和usage.md。
使用下面列出的方法之一或下载适用于 macOS、Linux 或 Windows 的预构建版本。解压它并将可执行文件移动到PATH
等。
在 macOS 上,如果您不使用以下方法之一进行安装,则可能需要手动允许二进制文件运行。这可以通过尝试运行二进制文件,忽略警告,然后进入安全首选项并允许它来完成。可以使用此命令完成相同的操作:
xattr -d com.apple.quarantine fq && spctl --add fq
brew install wader/tap/fq
在 macOS 上, fq
也可以通过 MacPorts 安装。更多详细信息请参见此处。
sudo port install fq
fq
可以通过 scoop 安装。
scoop install fq
可以使用 pacman 从额外的存储库安装fq
:
pacman -S fq
您还可以使用 AUR 帮助程序构建和安装开发 (VCS) 包:
paru -S fq-git
nix-shell -p fq
使用 fq 端口。
目前正在进行边缘测试,但在稳定版中也应该可以正常工作。
apk add -X http://dl-cdn.alpinelinux.org/alpine/edge/testing fq
确保您已安装 go 1.22 或更高版本。
直接从 git 存储库安装(不需要 git 克隆):
# build and install latest release
go install github.com/wader/fq@latest
# build and install latest master
go install github.com/wader/fq@master
# copy binary to $PATH if needed
cp " $( go env GOPATH ) /bin/fq " /usr/local/bin
从源代码构建、运行和测试:
# build and run
go run .
# build and run with arguments
go run . -d mp3 . file.mp3
# just build
go build -o fq .
# run all tests and build binary
make test fq
参见 dev.md
如果没有 itchyny 的 jq 实现 gojq,这个项目就不可能实现。我还要感谢 HexFiend 的灵感和想法,感谢 stedolan 发明了 jq 语言。
tshark -T json
)。mediainfo --Output=JSON
和mediainfo --Details=1
)。参见 TODO.md
fq
是根据 MIT 许可证的条款分发的。
有关许可证详细信息,请参阅许可证文件。
直接依赖的许可证: