Keystroke-savers¶
Short format specifiers, including --c2p¶
In our examples so far we've often made use of mlr --icsv --opprint
or mlr --icsv --ojson
. These are such frequently occurring patterns that they have short options like --c2p
and --c2j
:
mlr --c2p head -n 2 example.csv
color shape flag k index quantity rate yellow triangle true 1 11 43.6498 9.8870 red square true 2 15 79.2778 0.0130
mlr --c2j head -n 2 example.csv
[ { "color": "yellow", "shape": "triangle", "flag": "true", "k": 1, "index": 11, "quantity": 43.6498, "rate": 9.8870 }, { "color": "red", "shape": "square", "flag": "true", "k": 2, "index": 15, "quantity": 79.2778, "rate": 0.0130 } ]
You can get the full list here.
File names up front, including --from¶
Already we saw that you can put the filename first using --from
. When you're interacting with your data at the command line, this makes it easier to up-arrow and append to the previous command:
mlr --c2p --from example.csv sort -nr index then head -n 3
color shape flag k index quantity rate purple square false 10 91 72.3735 8.2430 yellow circle true 9 87 63.5058 8.3350 yellow circle true 8 73 63.9785 4.2370
mlr --c2p --from example.csv sort -nr index then head -n 3 then cut -f shape,quantity
shape quantity square 72.3735 circle 63.5058 circle 63.9785
If there's more than one input file, you can use --mfrom
, then however many file names, then --
to indicate the end of your input-file-name list:
mlr --c2p --mfrom data/*.csv -- sort -n index
Shortest flags for CSV, TSV, and JSON¶
The following have even shorter versions:
-c
is the same as--csv
-t
is the same as--tsv
-j
is the same as--json
I don't use these within these documents, since I want the docs to be self-explanatory on every page, and
I think mlr --csv ...
explains itself better than mlr -c ...
. Nonetheless, they're always there for you to use.
.mlrrc file¶
If you want the default file format for Miller to be CSV, you can simply put --csv
on a line by itself in your ~/.mlrrc
file. Then instead of mlr --csv cat example.csv
you can just do mlr cat example.csv
. This is just a personal default, though, so mlr --opprint cat example.csv
will use default CSV format for input, and PPRINT (tabular) for output.
You can read more about this at the Customization page.
Scripts and mlr -s¶
Suppose you are often doing something like
mlr --csv \ filter ‘$quantity > 100’ then \ count-distinct -f category then \ fraction -f count \ filename-which-varies.csv
Typing this out can get a bit old, if the only thing that changes for you is the filename.
See Scripting with Miller for some keystroke-saving options.