home / data-processing / miller

Miller

9.8k

Record-processing CLI for filtering, transforming, aggregating, and converting CSV, TSV, JSON, and similar structured data.

$brew install miller
Language
Go
Stars
9,774
Category
Data Processing
Agent
Ready
Agent Compatibility
JSON Output
Agent Skill
MCP Support
AI Analysis

Miller is a record-oriented data wrangling CLI for CSV, TSV, JSON, JSON Lines, YAML, and similar file formats. It sits between classic Unix text tools and custom scripts, letting you inspect, reshape, aggregate, and convert structured records directly in shell pipelines.

What It Enables
  • Convert between CSV, TSV, JSON, JSON Lines, YAML, DKVP, XTAB, markdown-tabular, and other record formats without losing field names.
  • Filter, sort, join, group, and aggregate records, or compute new fields with verbs like put, filter, join, and stats1.
  • Clean exports or logs, split output by key, and rewrite files in place or stream transformed records into downstream commands.
Agent Fit
  • stdin or file-based commands, predictable stdout, and Miller's internal then chaining make it easy to script inspect, transform, and verify loops.
  • Structured output is real rather than incidental: source-backed --ojson and --ojsonl flags let agents hand results to other tools without screen scraping.
  • Best used as local data-processing glue around service CLIs, reports, and logs; more complex transforms require careful use of format flags and Miller's DSL quoting.
Caveats
  • It does not talk to remote services on its own; its value comes from reshaping local files or the output of other commands.
  • Streaming is a strength, but the docs call out that some verbs such as sort, tac, and stats1 retain more data in memory.