Miller
Miller 6.20.2 is a command-line processor for CSV, TSV, JSON and JSON Lines data, with field filtering, transformation, sorting, aggregation and streaming operations.
What Miller does
Miller works with named records in CSV, TSV, JSON and JSON Lines formats. Its mlr verbs can select fields, calculate values, filter records, sort data, aggregate results and convert output in a pipeline without requiring a spreadsheet or database interface.
Streaming and memory boundaries
Many record-by-record operations stream through input and can handle files larger than memory. Sorting, reverse operations and some aggregations need additional memory, disk and time based on the file and field cardinality.
Source-file protection
Miller normally writes to standard output. Redirection, shell scripts and batch jobs decide whether a file is overwritten, so first write to a new path and compare row count, fields and key totals before replacing an input.
Schema and format boundaries
Extensions do not guarantee content. Specify the input and output formats, delimiter, quote rules, null handling, dates, numbers and leading-zero policy rather than relying on file-name inference.
Maintenance note
Review date: 2026-08-23. The page was checked against Miller 6.20.2, the Windows x64 archive, mlr streaming behavior, field operations and source-data protection.
Save to your cloud drive
Open the cloud drive to get the file directly, or save it for convenient access on another device.
Quark Cloud Drive
RecommendedSave Miller to this cloud drive
Baidu Netdisk
Save Miller to this cloud drive
Miller 6.20.2 structured-text filtering and conversion guide
Establish a field and format baseline with a small non-sensitive CSV, direct every result to a new file and only then process the production dataset.
Before you start
- Prepare a headered test CSV and record row count, field names, encoding and delimiter.
- Use an independent Windows x64 working directory instead of the only source file.
- Decide how nulls, dates, numbers and leading zeros must be retained across input and output formats.
Installation steps
- 01
Extract the Windows archive
Verify version, filename and architecture, unpack to a fixed directory and confirm that the mlr executable is not nested or renamed unexpectedly.
- 02
Check version and help
Run version and help commands, confirm 6.20.2 and inspect the supported formats and verbs before writing a longer pipeline.
- 03
Create a read-only test copy
Copy a small CSV, preserve original row count, size and checksum and use a different filename for every result.
Quick start
- 01
Preview records and fields
Specify the CSV input format and inspect the first records, confirming header, delimiter and character display before combining operations.
- 02
Filter and calculate a field
Use cut, filter or put on a small sample, check field names and expressions step by step and avoid an opaque one-line pipeline.
- 03
Convert and compare output
Write a new CSV, TSV or JSON file, read it again and compare row count, field order, nulls and key aggregates with the input baseline.
Usage tips
- Explicitly set input and output formats because an extension, delimiter and actual content can disagree.
- Estimate memory and runtime on a sample before sorting, reversing or aggregating a large file.
- Keep input and output paths distinct in redirections and batch jobs, and retain a recoverable copy.
Troubleshooting and uninstall
Why are quotes, Unicode or newlines parsed incorrectly?
Check encoding, CSV quote rules, delimiter and line ending with a minimal sample. Do not fix embedded quotes or newlines by simply replacing commas.
Why did an identifier lose leading zeros?
Treat postal codes and identifiers as strings, and specify the field type when writing and importing. A value that looks numeric is not always a number.
- Remove executable and script referencesArchive result files, check PATH, batch files and automated jobs for mlr references and delete the extracted directory after those references are updated.
Frequently asked questions
How is Miller different from awk, sed or jq?
Miller is designed around named records and can process CSV, TSV, JSON and JSON Lines with field operations, calculations, sorting and conversion in one data-oriented pipeline.
Can Miller process files larger than memory?
Many record-by-record operations stream, while sorting, reversing and some aggregations require more memory or disk. Measure the specific operation on a sample first.
Does Miller modify the original file?
It normally writes to standard output. Redirection or a script may overwrite a path, so write to a new file and verify it before replacing the source.