バイナリ データを操作するためのツール、言語、およびデコーダ。
TLDR: ファイルを 1 つに結合するための jq、hexdump、dd、gdb を目指しています。
基本的な使い方はfq . file
、 fq d file
またはfq 'some query' file ...
。
詳細については、uses.md を参照してください。
fq は jq ツールと言語からインスピレーションを得ており、同じ方法でバイナリ形式を操作できます。 jq 式の使用に加えて、デコードされたツリー構造を表示し、バイナリ データを変換、スライス、連結することもできます。また、ネストされた形式もサポートし、関数と名前の自動補完を備えたインタラクティブな REPL を備えています。
元々は、MP4、FLAC、JPEG などのメディア コーデックとコンテナをクエリ、検査、デバッグするように設計されましたが、その後、実行可能ファイル、パケット キャプチャ (TCP 再アセンブリによる)、JSON、YAML、XML などのシリアル化形式などのさまざまな形式をサポートするように拡張されました。 、CBOR、プロトブフ。さらに、URL の操作、16 進数、基数との変換、パターンの検索などの機能もあります。
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、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、zip
また、URL、16 進数、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 では、MacPorts 経由でfq
をインストールすることもできます。詳細はこちら。
sudo port install fq
fq
scoop 経由でインストールできます。
scoop install fq
fq
pacman を使用して追加のリポジトリからインストールできます。
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 と、jq 言語を発明してくれた stedolan にも感謝したいと思います。
tshark -T json
)。mediainfo --Output=JSON
およびmediainfo --Details=1
)。TODO.md を参照してください。
fq
は MIT ライセンスの条件に基づいて配布されます。
ライセンスの詳細については、LICENSE ファイルを参照してください。
直接依存関係のライセンス: