Herramienta, lenguaje y decodificadores para trabajar con datos binarios.
TLDR: pretende ser jq, hexdump, dd y gdb para archivos combinados en uno.
El uso básico es fq . file
, fq d file
o fq 'some query' file ...
Para obtener más información, consulte use.md.
fq está inspirado en la herramienta y el lenguaje jq y permite trabajar con formatos binarios de la misma forma. Además de utilizar expresiones jq, también puede presentar estructuras de árbol decodificadas, transformar, dividir y concatenar datos binarios. También admite formatos anidados y presenta un REPL interactivo con autocompletado de funciones y nombres.
Originalmente fue diseñado para consultar, inspeccionar y depurar códecs y contenedores de medios como MP4, FLAC y JPEG, pero desde entonces se ha ampliado para admitir una variedad de formatos como ejecutables, capturas de paquetes (con reensamblaje TCP) y formatos de serialización como JSON, YAML, XML. , CBOR, protobuf. Además también tiene funciones para trabajar con URLs, convertir a/desde hexadecimal, bases numéricas, buscar patrones, etc.
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, duende, ether8023_frame, exif, fairplay_spc, ajuste, 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, zip
También puede funcionar con algunos formatos de texto comunes como URL, hexadecimal, base64, PEM, etc. y para algunos formatos de serialización como XML, YAML, etc. puede transformar desde y hacia valores jq.
Para obtener más información, consulte formatos.md y use.md.
Utilice uno de los métodos que se enumeran a continuación o descargue una versión prediseñadas para macOS, Linux o Windows. Descomprímalo y mueva el ejecutable a PATH
etc.
En macOS, si no realiza la instalación utilizando uno de los métodos siguientes, es posible que deba permitir manualmente que se ejecute el binario. Esto se puede hacer intentando ejecutar el binario, ignorar la advertencia y luego acceder a las preferencias de seguridad y permitirlo. Lo mismo se puede hacer con este comando:
xattr -d com.apple.quarantine fq && spctl --add fq
brew install wader/tap/fq
En macOS, fq
también se puede instalar a través de MacPorts. Más detalles aquí.
sudo port install fq
fq
se puede instalar mediante Scoop.
scoop install fq
fq
se puede instalar desde el repositorio adicional usando pacman:
pacman -S fq
También puede compilar e instalar el paquete de desarrollo (VCS) utilizando un asistente AUR:
paru -S fq-git
nix-shell -p fq
Utilice el puerto fq.
Actualmente en pruebas de borde, pero también debería funcionar bien en versión estable.
apk add -X http://dl-cdn.alpinelinux.org/alpine/edge/testing fq
Asegúrate de tener instalado Go 1.22 o posterior.
Para instalar directamente desde el repositorio de git (no se necesita clon de 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
Para compilar, ejecutar y probar desde el código fuente:
# 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
Ver dev.md
Este proyecto no habría sido posible sin la implementación gojq de jq de itchyny. También quiero agradecer a HexFiend por la inspiración y las ideas y a stedolan por inventar el lenguaje jq.
tshark -T json
).mediainfo --Output=JSON
y mediainfo --Details=1
).Ver TODO.md
fq
se distribuye bajo los términos de la licencia MIT.
Consulte el archivo LICENCIA para obtener detalles sobre la licencia.
Licencias de dependencias directas: