เครื่องมือ ภาษา และตัวถอดรหัสสำหรับการทำงานกับข้อมูลไบนารี
TLDR: มีเป้าหมายเพื่อเป็น jq, hexdump, dd และ gdb สำหรับไฟล์ที่รวมเป็นไฟล์เดียว
การใช้งานพื้นฐานคือ fq . file
, fq d file
หรือ fq 'some query' file ...
.
สำหรับรายละเอียดโปรดดูที่การใช้งาน.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, บิต, bplist, bsd_loopback_frame, bson, ไบต์, bzip2, caff, cbor, csv, dns, dns_tcp, เอลฟ์, ether8023_frame, exif, fairplay_spc, พอดี, 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, แตะ, 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 และ การใช้งาน.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 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
ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง 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
โปรเจ็กต์นี้คงเป็นไปไม่ได้หากไม่มีการนำ jq ไปใช้ gojq ของ itchyny ฉันอยากจะขอบคุณ HexFiend สำหรับแรงบันดาลใจและแนวคิด และ stedolan สำหรับการประดิษฐ์ภาษา jq
tshark -T json
)mediainfo --Output=JSON
และ mediainfo --Details=1
)ดูที่ TODO.md
fq
ได้รับการเผยแพร่ภายใต้เงื่อนไขของใบอนุญาต MIT
ดูไฟล์ใบอนุญาตสำหรับรายละเอียดใบอนุญาต
ใบอนุญาตของการพึ่งพาโดยตรง: