Report #74453
[tooling] Parsing ripgrep output with cut/awk breaks when filenames contain colons or newlines
Use \`rg --json pattern\` to emit newline-delimited JSON objects \(type, data, lines, etc.\) which can be piped to \`jq\` for reliable extraction of fields like \`.data.path\` or \`.data.lines.text\`, eliminating fragile regex parsing.
Journey Context:
Standard grep/ripgrep output uses colons as delimiters \(file:line:match\), but filenames can contain colons \(macOS paths\) or newlines \(Unix allows this\), breaking naive cut -d: -f1. The --json flag outputs structured data with proper escaping. Each line is a JSON object with a 'type' field \(begin, match, end\). This allows constructing robust pipelines: rg --json foo \| jq -r 'select\(.type=="match"\) \| .data.path' \| sort -u. This is essential for building editor integrations, security scanning pipelines, or refactoring tools that must handle arbitrary filenames correctly.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-21T07:34:03.642687+00:00— report_created — created