Tool, Sprache und Decoder für die Arbeit mit Binärdaten.
TLDR: Es soll jq, hexdump, dd und gdb für Dateien sein, die in einem zusammengefasst sind.
Die grundlegende Verwendung ist fq . file
, fq d file
oder fq 'some query' file ...
.
Einzelheiten finden Sie unter „uses.md“.
fq ist vom Tool und der Sprache jq inspiriert und ermöglicht es Ihnen, auf die gleiche Weise mit Binärformaten zu arbeiten. Neben der Verwendung von JQ-Ausdrücken können auch dekodierte Baumstrukturen dargestellt, Binärdaten transformiert, segmentiert und verkettet werden. Es unterstützt auch verschachtelte Formate und verfügt über eine interaktive REPL mit automatischer Vervollständigung von Funktionen und Namen.
Es wurde ursprünglich zum Abfragen, Überprüfen und Debuggen von Mediencodecs und Containern wie MP4, FLAC und JPEG entwickelt, wurde jedoch inzwischen erweitert, um eine Vielzahl von Formaten wie ausführbare Dateien, Paketerfassungen (mit TCP-Zusammensetzung) und Serialisierungsformate wie JSON, YAML, XML zu unterstützen , CBOR, protobuf. Darüber hinaus verfügt es über Funktionen zum Arbeiten mit URLs, zum Konvertieren in/von Hex, Zahlenbasen, zur Suche nach Mustern usw.
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, bits, bplist, bsd_loopback_frame, bson, bytes, bzip2, caff, cbor, csv, dns, dns_tcp, elf, ether8023_frame, exif, fairplay_spc, fit, 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, negentropy, 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, Reißverschluss
Es kann auch mit einigen gängigen Textformaten wie URLs, Hex, Base64, PEM usw. funktionieren und für einige Serialisierungsformate wie XML, YAML usw. kann es sowohl von als auch in JQ-Werte umwandeln.
Einzelheiten finden Sie unter formats.md und Usage.md.
Verwenden Sie eine der unten aufgeführten Methoden oder laden Sie eine vorgefertigte Version für macOS, Linux oder Windows herunter. Dearchivieren Sie es und verschieben Sie die ausführbare Datei nach PATH
usw.
Wenn Sie unter macOS nicht mit einer der folgenden Methoden installieren, müssen Sie die Ausführung der Binärdatei möglicherweise manuell zulassen. Dies kann erreicht werden, indem man versucht, die Binärdatei auszuführen, die Warnung zu ignorieren und dann in die Sicherheitseinstellungen zu gehen und sie zuzulassen. Das Gleiche kann mit diesem Befehl erfolgen:
xattr -d com.apple.quarantine fq && spctl --add fq
brew install wader/tap/fq
Unter macOS kann fq
auch über MacPorts installiert werden. Weitere Details hier.
sudo port install fq
fq
kann über scoop installiert werden.
scoop install fq
fq
kann mit Pacman aus dem zusätzlichen Repository installiert werden:
pacman -S fq
Sie können das Entwicklungspaket (VCS) auch mit einem AUR-Helfer erstellen und installieren:
paru -S fq-git
nix-shell -p fq
Verwenden Sie den FQ-Port.
Derzeit im Edge-Test, sollte aber auch im stabilen Zustand gut funktionieren.
apk add -X http://dl-cdn.alpinelinux.org/alpine/edge/testing fq
Stellen Sie sicher, dass Go 1.22 oder höher installiert ist.
So installieren Sie direkt aus dem Git-Repository (kein Git-Klon erforderlich):
# 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
So erstellen, führen und testen Sie aus dem Quellcode:
# 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
Siehe dev.md
Dieses Projekt wäre ohne die jq-Implementierung gojq von Itchyny nicht möglich gewesen. Ich möchte auch HexFiend für Inspiration und Ideen und Stedolan für die Erfindung der JQ-Sprache danken.
tshark -T json
).mediainfo --Output=JSON
und mediainfo --Details=1
).Siehe TODO.md
fq
wird unter den Bedingungen der MIT-Lizenz vertrieben.
Einzelheiten zur Lizenz finden Sie in der Datei LICENSE.
Lizenzen direkter Abhängigkeiten: