Инструмент, язык и декодеры для работы с двоичными данными.
TLDR: это jq, hexdump, dd и gdb для файлов, объединенных в один.
Основное использование — fq . file
, fq d file
или fq 'some query' file ...
.
Подробности смотрите на сайте use.md.
fq создан на основе инструмента и языка jq и позволяет таким же образом работать с двоичными форматами. Помимо использования выражений jq, он также может представлять декодированные древовидные структуры, преобразовывать, разрезать и объединять двоичные данные. Он также поддерживает вложенные форматы и имеет интерактивный REPL с автоматическим завершением функций и имен.
Первоначально он был разработан для запроса, проверки и отладки медиакодеков и контейнеров, таких как MP4, FLAC и JPEG, но с тех пор был расширен для поддержки различных форматов, таких как исполняемые файлы, захват пакетов (с повторной сборкой TCP) и форматы сериализации, такие как JSON, YAML, XML. , CBOR, протобуф. Кроме того, он также имеет функции для работы с 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, 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, уценка, matroska, миди, 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, нажмите, 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, ямл, zip
Он также может работать с некоторыми распространенными текстовыми форматами, такими как URL-адреса, шестнадцатеричный формат, base64, PEM и т. д., а для некоторых форматов сериализации, таких как XML, YAML и т. д., он может преобразовывать как значения jq, так и их значения.
Подробности смотрите в файлах formats.md и use.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
fq
можно установить из дополнительного репозитория с помощью pacman:
pacman -S fq
Вы также можете собрать и установить пакет разработки (VCS) с помощью помощника AUR:
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
Этот проект был бы невозможен без реализации gojq от itchyny. Я также хочу поблагодарить HexFiend за вдохновение и идеи и Stedolan за изобретение языка jq.
tshark -T json
).mediainfo --Output=JSON
и mediainfo --Details=1
).См. TODO.md
fq
распространяется на условиях лицензии MIT.
Подробную информацию о лицензии смотрите в файле LICENSE.
Лицензии прямых зависимостей: