mirror of
https://github.com/johnkerl/miller.git
synced 2026-07-21 10:29:02 +00:00
56 lines
2 KiB
Markdown
56 lines
2 KiB
Markdown
# Reference: Miller commands
|
|
|
|
## Overview
|
|
|
|
The outline of an invocation of Miller is
|
|
|
|
* `mlr`
|
|
* Options controlling input/output formatting, etc. ([Reference: I/O options](reference-main-io-options.md)).
|
|
* One or more verbs (such as `cut`, `sort`, etc.) ([Verbs Reference](reference-verbs.md)) -- chained together using [then](reference-main-then-chaining.md)). You use these to transform your data.
|
|
* Zero or more filenames, with input taken from standard input if there are no filenames present.
|
|
|
|
For example, reading from a file:
|
|
|
|
GENMD_RUN_COMMAND
|
|
mlr --icsv --opprint head -n 2 then sort -f shape example.csv
|
|
GENMD_EOF
|
|
|
|
Reading from standard input:
|
|
|
|
GENMD_RUN_COMMAND
|
|
cat example.csv | mlr --icsv --opprint head -n 2 then sort -f shape
|
|
GENMD_EOF
|
|
|
|
The rest of this reference section gives you full information on each of these parts of the command line.
|
|
|
|
## Verbs vs DSL
|
|
|
|
When you type `mlr {something} myfile.dat`, the `{something}` part is called a **verb**. It specifies how you want to transform your data. Most of the verbs are counterparts of built-in system tools like `cut` and `sort` -- but with file-format awareness, and giving you the ability to refer to fields by name.
|
|
|
|
The verbs `put` and `filter` are special in that they have a rich expression language (domain-specific language, or "DSL"). More information about them can be found at [DSL reference](reference-dsl.md).
|
|
|
|
Here's a comparison of verbs and `put`/`filter` DSL expressions:
|
|
|
|
Example of using a verb for data processing:
|
|
|
|
GENMD_RUN_COMMAND
|
|
mlr stats1 -a sum -f x -g a data/small
|
|
GENMD_EOF
|
|
|
|
* Verbs are coded in Go
|
|
* They run a bit faster
|
|
* They take fewer keystrokes
|
|
* There's less to learn
|
|
* Their customization is limited to each verb's options
|
|
|
|
Example of doing the same thing using a DSL expression:
|
|
|
|
GENMD_RUN_COMMAND
|
|
mlr put -q '@x_sum[$a] += $x; end{emit @x_sum, "a"}' data/small
|
|
GENMD_EOF
|
|
|
|
* You get to write your own expressions in Miller's programming language
|
|
* They run a bit slower
|
|
* They take more keystrokes
|
|
* There's more to learn
|
|
* They're highly customizable
|