jsongrep: 벤치마크에서 jq를 능가하는 DFA 기반 JSON 쿼리 도구

jsongrep의 기능
jsongrep(jg 바이너리)는 쿼리와 JSON 입력을 받아 문서 경로가 쿼리와 일치하는 모든 값을 출력합니다. JSON 문서를 객체와 배열이 가지를 치고, 스칼라 값이 잎이며, 키와 인덱스가 가장자리를 표시하는 트리로 취급합니다. 쿼리 언어는 키와 인덱스 알파벳에 대한 정규 언어입니다.
쿼리 언어 기능
점 경로는 이름으로 중첩된 필드를 선택합니다: jg 'roommates[0].name'는 roommates.[0].name: "Alice"를 반환합니다.
와일드카드는 단일 키(*) 또는 배열 인덱스([*])와 일치합니다: jg 'favorite_drinks[*]'는 모든 배열 요소를 반환합니다.
교대(|)는 두 가지 가지 중 하나와 일치합니다: jg 'name | roommates'는 두 필드를 모두 반환합니다.
재귀 하강은 임의의 깊이를 탐색하기 위해 클리니 별표 내부에서 *와 [*]를 사용합니다: jg '(* | [*])*.name'는 모든 깊이의 모든 이름 필드를 찾습니다. -F 플래그는 단축어를 제공합니다: jg -F name도 동일한 작업을 수행합니다.
옵셔널(?)은 0회 또는 1회 발생과 일치합니다: jg 'roommates[0].favorite_food?'는 상위 객체와 필드 값을 모두 반환합니다.
기술적 접근 방식
jsongrep는 쿼리를 결정적 유한 오토마타(DFA)로 컴파일하는데, 이 파이프라인에는 쿼리 파싱, JSON을 트리로 취급, Glushkov 알고리즘을 사용한 NFA 구성, 부분집합 구성을 통한 결정화, DFA 전환을 사용한 DFS 검색이 포함됩니다. 이를 통해 단일 패스로 처리되며 입력 기호당 O(1) 작업으로 병리적 쿼리에서의 백트래킹, 재귀 스택, 지수적 폭발을 피할 수 있습니다.
저자는 이 접근 방식이 jq, jmespath, jsonpath-rust와 같은 도구와 근본적으로 다르다고 지적합니다. 이러한 도구들은 경로 표현식을 해석하고, 각 노드에서 쿼리를 평가하며, 조건자를 확인하고, 재귀적으로 하강하여 하위 트리를 재방문하거나 재귀 하강 쿼리로 작업 목록을 유지할 수 있습니다.
설치 및 가용성
crates.io에서 설치: cargo install jsongrep. 이 프로젝트에 영감을 준 ripgrep과 마찬가지로 jsongrep는 크로스 플랫폼으로 바이너리가 제공되며 Rust로 작성되었습니다.
이 도구는 출력이 less나 sort와 같은 명령어로 파이프되는지 감지하고 기본적으로 JSON 경로를 생략합니다(--with-path 옵션으로 재정의 가능).
📖 전체 소스 읽기: HN LLM Tools
👀 See Also

depct: MCP 서버는 Claude에 실시간 런타임 분석 및 문서화 기능을 제공합니다
depct는 Node.js 애플리케이션을 계측하여 런타임 데이터를 수집하고, Claude가 코딩 전에 접근할 수 있는 신뢰도 수준이 표시된 구조화된 문서를 생성하는 MCP 서버입니다. 이 도구는 Claude가 변경 사항을 적용한 후 자동으로 문서를 업데이트합니다.

컴패니언-캡처: Claude Code의 일시적인 말풍선을 저장하는 도구
companion-capture는 터미널에서 사라지기 전에 Claude Code의 동반 캐릭터 말풍선을 캡처하는 오픈소스 도구입니다. VT100 화면 버퍼 파싱을 사용하여 커서 위치를 추적하며, 메시지를 마크다운 파일과 검색을 위한 SQLite에 저장합니다.

오픈소스 파이프라인, Claude Code 워크플로우를 재사용 가능한 스킬로 전환
9개월 동안 매일 Claude Code를 사용한 개발자가 기능 개발을 기능 문서화, 기술 문서화, 복잡도 추정, 보안 검사 등의 체크포인트로 구조화하는 파이프라인을 오픈소스로 공개했습니다. 이 파이프라인에는 구현을 안내하는 /new-feature와 /bug-fix 진입점이 포함되어 있습니다.

컨텍스트-킷: AI 어시스턴트 구성을 위한 오픈 소스 도구
Context-kit은 AI 코딩 어시스턴트를 위한 설정 파일과 스킬 문서를 생성하는 무료 도구입니다. Claude Code, Cursor, Windsurf, GitHub Copilot, Gemini CLI를 지원합니다.