바이너리 데이터 작업을 위한 도구, 언어 및 디코더입니다.
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, 프로토부프. 또한 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, 바이트, 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, hex, base64, PEM 등과 같은 일부 일반적인 텍스트 형식으로 작업할 수 있으며 XML, YAML 등과 같은 일부 직렬화 형식의 경우 jq 값을 변환할 수 있습니다.
자세한 내용은 format.md 및 Usage.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 clone이 필요하지 않음):
# 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 파일을 참조하십시오.
직접 종속 라이센스: