neulab/tldr huggingface dataset:
imLocale: name The locale to use for opening the IM. You can use an "LC_CTYPE" of e.g.  "de_DE.UTF-8" for normal text processing but "ja_JP.EUC-JP" for the input extension to be able to input japanese characters while staying in another locale; option -imlocale.
imFont: fontset Specify the font-set used for XIM styles "OverTheSpot" or "OffTheSpot". It must be a standard X font set (XLFD patterns separated by commas), i.e. it's not in the same format as the other font lists used in urxvt. The default will be set-up to chose *any* suitable found found, preferably one or two pixels differing in size to the base font.  option -imfont.
tripleclickwords: boolean Change the meaning of triple-click selection with the left mouse button. Instead of selecting a full line it will extend the selection to the end of the logical line only; option -tcw.
insecure: boolean Enables "insecure" mode. Rxvt-unicode offers some escape sequences that echo arbitrary strings like the icon name or the locale. This could be abused if somebody gets 8-bit-clean access to your display, whether through a mail client displaying mail bodies unfiltered or through write(1) or any other means. Therefore, these sequences are disabled by default. (Note that many other terminals, including xterm, have these sequences enabled by default, which doesn't make it safer, though).
You can enable them by setting this boolean resource or specifying -insecure as an option. At the moment, this enables display-answer, locale, findfont, icon label and window title requests.
modifier: modifier Set the key to be interpreted as the Meta key to: alt, meta, hyper, super, mod1, mod2, mod3, mod4, mod5; option -mod.
answerbackString: string Specify the reply rxvt-unicode sends to the shell when an ENQ (control-E) character is passed through. It may contain escape values as described in the entry on keysym following.
secondaryScreen: boolean Turn on/off secondary screen (default enabled).
secondaryScroll: boolean Turn on/off secondary screen scroll (default enabled). If this option is enabled, scrolls on the secondary screen will change the scrollback buffer and, when secondaryScreen is off, switching to/from the secondary screen will instead scroll the screen up.
hold: boolean Turn on/off hold window after exit support. If enabled, urxvt will not immediately destroy its window when the program executed within it exits. Instead, it will wait till it is being killed or closed by the user.
chdir: path Sets the working directory for the shell (or the command specified via -e). The path must be an absolute path and it must exist for urxvt to start. If it isn't specified then the current working directory will be used; option -cd.
keysym.sym: action Compile frills: Associate action with keysym sym. The intervening resource name keysym. cannot be omitted.
Using this resource, you can map key combinations such as "Ctrl-Shift-BackSpace" to various actions, such as outputting a different string than would normally result from that combination, making the terminal scroll up or down the way you want it, or any other thing an extension might provide.
The key combination that triggers the action, sym, has the following format:
(modifiers-)key
Where modifiers can be any combination of the following full or abbreviated modifier names:
ISOLevel3   I AppKeypad   K Control     C NumLock     N Shift       S Meta        M or A Lock        L Mod1        1 Mod2        2 Mod3        3 Mod4        4 Mod5        5
The NumLock, Meta and ISOLevel3 modifiers are usually aliased to whatever modifier the NumLock key, Meta/Alt keys or ISO Level3 Shift/AltGr keys are being mapped. AppKeypad is a synthetic modifier mapped to the current application keymap mode state.
Due the the large number of modifier combinations, a key mapping will match if at least the specified identifiers are being set, and no other key mappings with those and more bits are being defined. That means that defining a mapping for "a" will automatically provide definitions for "Meta-a", "Shift-a" and so on, unless some of those are defined mappings themselves. See the "builtin:" action, below, for a way to work around this when this is a problem.
The spelling of key depends on your implementation of X. An easy way to find a key name is to use the xev(1) command. You can find a list by looking for the "XK_" macros in the X11/keysymdef.h include file (omit the "XK_" prefix). Alternatively you can specify key by its hex keysym value (0x0000 - 0xFFFF).
As with any resource value, the action string may contain backslash escape sequences ("\n": newline, "\\": backslash, "\000": octal number), see RESOURCES in "man 7 X" for further details.
An action starts with an action prefix that selects a certain type of action, followed by a colon. An action string without colons is interpreted as a literal string to pass to the tty (as if it was prefixed with "string:").
The following action prefixes are known - extensions can provide additional prefixes:
string:STRING If the action starts with "string:" (or otherwise contains no colons), then the remaining "STRING" will be passed to the program running in the terminal. For example, you could replace whatever Shift-Tab outputs by the string "echo rm -rf /" followed by a newline:
URxvt.keysym.Shift-Tab: string:echo rm -rf /\n
This could in theory be used to completely redefine your keymap.
In addition, for actions of this type, you can define a range of keysyms in one shot by loading the "keysym-list" perl extension and providing an action with pattern list/PREFIX/MIDDLE/SUFFIX, where the delimiter `/' should be a character not used by the strings.
Its usage can be demonstrated by an example:
URxvt.keysym.M-C-0x61:    list|\033
The above line is equivalent to the following three lines:
URxvt.keysym.Meta-Control-0x61:    string:\033<a> URxvt.keysym.Meta-Control-0x62:    string:\033<b> URxvt.keysym.Meta-Control-0x63:    string:\033<c>
command:STRING If action takes the form of "command:STRING", the specified STRING is interpreted and executed as urxvt's control sequence (basically the opposite of "string:" - instead of sending it to the program running in the terminal, it will be treated as if it were program output). This is most useful to feed command sequences into urxvt.
For example the following means "change the current locale to "zh_CN.GBK" when Control-Meta-c is being pressed":
URxvt.keysym.M-C-c: command:\033]701;zh_CN.GBK\007
The following example will map Control-Meta-1 and Control-Meta-2 to the fonts "suxuseuro" and "9x15bold", so you can have some limited font-switching at runtime:
URxvt.keysym.M-C-1: command:\033]50;suxuseuro\007 URxvt.keysym.M-C-2: command:\033]50;9x15bold\007
Other things are possible, e.g. resizing (see urxvt(7) for more info):
URxvt.keysym.M-C-3: command:\033[8;25;80t URxvt.keysym.M-C-4: command:\033[8;48;110t
builtin: The builtin action is the action that urxvt would execute if no key binding existed for the key combination. The obvious use is to undo the effect of existing bindings. The not so obvious use is to reinstate bindings when another binding overrides too many modifiers.
For example if you overwrite the "Insert" key you will disable urxvt's "Shift-Insert" mapping. To re-enable that, you can poke "holes" into the user-defined keymap using the "builtin:" replacement:
URxvt.keysym.Insert: <my insert key sequence> URxvt.keysym.S-Insert: builtin:
The first line defines a mapping for "Insert" and any combination of modifiers. The second line re-establishes the default mapping for "Shift-Insert".
builtin-string: This action is mainly useful to restore string mappings for keys that have predefined actions in urxvt. The exact semantics are a bit difficult to explain - basically, this action will send the string to the application that would be sent if urxvt wouldn't have a built-in action for it.
An example might make it clearer: urxvt normally pastes the selection when you press "Shift-Insert". With the following bindings, it would instead emit the (undocumented, but what applications running in the terminal might expect) sequence "ESC [ 2 $" instead:
URxvt.keysym.S-Insert: builtin-string: URxvt.keysym.C-S-Insert: builtin:
The first line disables the paste functionality for that key combination, and the second reinstates the default behaviour for "Control-Shift-Insert", which would otherwise be overridden.
Similarly, to let applications gain access to the "C-M-c" (copy to clipboard) and "C-M-v" (paste clipboard) key combination, you can do this:
URxvt.keysym.C-M-c: builtin-string: URxvt.keysym.C-M-v: builtin-string:
EXTENSION:STRING An action of this form invokes the action STRING, if any, provided by the urxvtperl(3) extension EXTENSION. The extension will be loaded automatically if necessary.
Not all extensions define actions, but popular extensions that do include the selection and matcher extensions (documented in their own manpages, urxvt-selection(1) and urxvt-matcher(1), respectively).
From the silly examples department, this will rot13-"encrypt" urxvt's selection when Alt-Control-c is pressed on typical PC keyboards:
URxvt.keysym.M-C-c: selection:rot13
perl:STRING *DEPRECATED* This is a deprecated way of invoking commands provided by perl extensions. It is still supported, but should not be used anymore.
perl-ext-common: string perl-ext: string Comma-separated list(s) of perl extension scripts (default: "default") to use in this terminal instance; option -pe.
Extension names can be prefixed with a "-" sign to prohibit using them. This can be useful to selectively disable some extensions loaded by default, or specified via the "perl-ext-common" resource. For example, "default,-selection" will use all the default extensions except "selection".
The default set includes the "selection", "option-popup", "selection-popup", "readline" and "searchable-scrollback" extensions, and extensions which are mentioned in keysym resources.
Any extension such that a corresponding resource is given on the command line is automatically appended to perl-ext.
Each extension is looked up in the library directories, loaded if necessary, and bound to the current terminal instance. When the library search path contains multiple extension files of the same name, then the first one found will be used.
If both of these resources are the empty string, then the perl interpreter will not be initialized. The rationale for having two options is that perl-ext-common will be used for extensions that should be available to all instances, while perl-ext is used for specific instances.
perl-eval: string Perl code to be evaluated when all extensions have been registered. See the urxvtperl(3) manpage.
perl-lib: path Colon-separated list of additional directories that hold extension scripts. When looking for perl extensions, urxvt will first look in these directories, then in $URXVT_PERL_LIB, $HOME/.urxvt/ext and lastly in /usr/lib/urxvt/perl/.
See the urxvtperl(3) manpage.
selection.pattern-idx: perl-regex Additional selection patterns, see the urxvtperl(3) manpage for details.
selection-autotransform.idx: perl-transform Selection auto-transform patterns, see the urxvtperl(3) manpage for details.
searchable-scrollback: keysym *DEPRECATED* This resource is deprecated and will be removed. Use a keysym resource instead, e.g.:
URxvt.keysym.M-s: searchable-scrollback:start
url-launcher: string Specifies the program to be started with a URL argument. Used by the "selection-popup" and "matcher" perl extensions.
transient-for: windowid Compile frills: Sets the WM_TRANSIENT_FOR property to the given window id.
override-redirect: boolean Compile frills: Sets override-redirect for the terminal window, making it almost invisible to window managers; option -override-redirect.
iso14755: boolean Turn on/off ISO 14755 (default enabled).
iso14755_52: boolean Turn on/off ISO 14755 5.2 mode (default enabled).
Lines of text that scroll off the top of the urxvt window (resource: saveLines) and can be scrolled back using the scrollbar or by keystrokes. The normal urxvt scrollbar has arrows and its behaviour is fairly intuitive. The xterm-scrollbar is without arrows and its behaviour mimics that of xterm
Scroll down with Button1 (xterm-scrollbar) or Shift-Next.  Scroll up with Button3 (xterm-scrollbar) or Shift-Prior.  Continuous scroll with Button2.
To temporarily override mouse reporting, for either the scrollbar or the normal text selection/insertion, hold either the Shift or the Meta (Alt) key while performing the desired mouse action.
If mouse reporting mode is active, the normal scrollbar actions are disabled -- on the assumption that we are using a fullscreen application. Instead, pressing Button1 and Button3 sends ESC [ 6 ~ (Next) and ESC [ 5 ~ (Prior), respectively. Similarly, clicking on the up and down arrows sends ESC [ A (Up) and ESC [ B (Down), respectively.
THE SELECTION: SELECTING AND PASTING TEXT The behaviour of text selection and insertion/pasting mechanism is similar to xterm(1).
Selecting: Left click at the beginning of the region, drag to the end of the region and release; Right click to extend the marked region; Left double-click to select a word; Left triple-click to select the entire logical line (which can span multiple screen lines), unless modified by resource tripleclickwords.
Starting a selection while pressing the Meta key (or Meta+Ctrl keys) (Compile: frills) will create a rectangular selection instead of a normal one. In this mode, every selected row becomes its own line in the selection, and trailing whitespace is visually underlined and removed from the selection.
Pasting: Pressing and releasing the Middle mouse button in an urxvt window causes the value of the PRIMARY selection (or CLIPBOARD with the Meta modifier) to be inserted as if it had been typed on the keyboard.
Pressing Shift-Insert causes the value of the PRIMARY selection to be inserted too.
rxvt-unicode also provides the bindings Ctrl-Meta-c and <Ctrl-Meta-v> to interact with the CLIPBOARD selection. The first binding causes the value of the internal selection to be copied to the CLIPBOARD selection, while the second binding causes the value of the CLIPBOARD selection to be inserted.
Changing fonts (or font sizes, respectively) via the keypad is not yet supported in rxvt-unicode. Bug me if you need this.
You can, however, switch fonts at runtime using escape sequences, e.g.:
printf '\e]710;%s\007' "9x15bold,xft:Kochi Gothic"
You can use keyboard shortcuts, too:
URxvt.keysym.M-C-1: command:\033]710;suxuseuro\007\033]711;suxuseuro\007 URxvt.keysym.M-C-2: command:\033]710;9x15bold\007\033]711;9x15bold\007
rxvt-unicode will automatically re-apply these fonts to the output so far.
ISO 14755 SUPPORT ISO 14755 is a standard for entering and viewing unicode characters and character codes using the keyboard. It consists of 4 parts. The first part is available if rxvt-unicode has been compiled with "--enable-frills", the rest is available when rxvt-unicode was compiled with "--enable-iso14755".
•   5.1: Basic method
This allows you to enter unicode characters using their hexcode.
Start by pressing and holding both "Control" and "Shift", then enter hex-digits (between one and six). Releasing "Control" and "Shift" will commit the character as if it were typed directly. While holding down "Control" and "Shift" you can also enter multiple characters by pressing "Space", which will commit the current character and lets you start a new one.
As an example of use, imagine a business card with a japanese e-mail address, which you cannot type. Fortunately, the card has the e-mail address printed as hexcodes, e.g. "671d 65e5". You can enter this easily by pressing "Control" and "Shift", followed by "6-7-1-D-SPACE-6-5-E-5", followed by releasing the modifier keys.
•   5.2: Keyboard symbols entry method
This mode lets you input characters representing the keycap symbols of your keyboard, if representable in the current locale encoding.
Start by pressing "Control" and "Shift" together, then releasing them. The next special key (cursor keys, home etc.) you enter will not invoke its usual function but instead will insert the corresponding keycap symbol. The symbol will only be entered when the key has been released, otherwise pressing e.g. "Shift" would enter the symbol for "ISO Level 2 Switch", although your intention might have been to enter a reverse tab (Shift-Tab).
•   5.3: Screen-selection entry method
While this is implemented already (it's basically the selection mechanism), it could be extended by displaying a unicode character map.
•   5.4: Feedback method for identifying displayed characters for later input
This method lets you display the unicode character code associated with characters already displayed.
You enter this mode by holding down "Control" and "Shift" together, then pressing and holding the left mouse button and moving around. The unicode hex code(s) (it might be a combining character) of the character under the pointer is displayed until you release "Control" and "Shift".
In addition to the hex codes it will display the font used to draw this character - due to implementation reasons, characters combined with combining characters, line drawing characters and unknown characters will always be drawn using the built-in support font.
With respect to conformance, rxvt-unicode is supposed to be compliant to both scenario A and B of ISO 14755, including part 5.2.
urxvt tries to write an entry into the utmp(5) file so that it can be seen via the who(1) command, and can accept messages.  To allow this feature, urxvt may need to be installed setuid root on some systems or setgid to root or to some other group on others.
In addition to the default foreground and background colours, urxvt can display up to 88/256 colours: 8 ANSI colours plus high-intensity (potentially bold/blink) versions of the same, and 72 (or 240 in 256 colour mode) colours arranged in an 4x4x4 (or 6x6x6) colour RGB cube plus a 8 (24) colour greyscale ramp.
urxvt supports direct 24-bit fg/bg RGB colour escapes " ESC [ 38 ; 2 ; R ; G ; Bm " / " ESC [ 48 ; 2; R ; G ; Bm ". However the number of 24-bit colours that can be used is limited: an internal 7x7x5 (256 colour mode) or 6x6x4 (88 colour mode) colour cube is used to index into the 24-bit colour space. When indexing collisions happen, the nearest old colour in the cube will be adapted to the new 24-bit RGB colour. That means one cannot use many similar 24-bit colours. It's typically not a problem in common scenarios.
Here is a list of the ANSI colours with their names.
color0       (black)            = Black color1       (red)              = Red3 color2       (green)            = Green3 color3       (yellow)           = Yellow3 color4       (blue)             = Blue3 color5       (magenta)          = Magenta3 color6       (cyan)             = Cyan3 color7       (white)            = AntiqueWhite color8       (bright black)     = Grey25 color9       (bright red)       = Red color10      (bright green)     = Green color11      (bright yellow)    = Yellow color12      (bright blue)      = Blue color13      (bright magenta)   = Magenta color14      (bright cyan)      = Cyan color15      (bright white)     = White foreground                      = Black background                      = White
It is also possible to specify the colour values of foreground, background, cursorColor, cursorColor2, colorBD, colorUL as a number 0-15, as a convenient shorthand to reference the colour name of color0-color15.
The following text gives values for the standard 88 colour mode (and values for the 256 colour mode in parentheses).
The RGB cube uses indices 16..79 (16..231) using the following formulas:
index_88  = (r * 4 + g) * 4 + b + 16   # r, g, b = 0..3 index_256 = (r * 6 + g) * 6 + b + 16   # r, g, b = 0..5
The grayscale ramp uses indices 80..87 (232..239), from 10% to 90% in 10% steps (1/26 to 25/26 in 1/26 steps) - black and white are already part of the RGB cube.
Together, all those colours implement the 88 (256) colour xterm colours. Only the first 16 can be changed using resources currently, the rest can only be changed via command sequences ("escape codes").
Applications are advised to use terminfo or command sequences to discover number and RGB values of all colours (yes, you can query this...).
Note that -rv ("reverseVideo: True") simulates reverse video by always swapping the foreground/background colours. This is in contrast to xterm(1) where the colours are only swapped if they have not otherwise been specified. For example,
urxvt -fg Black -bg White -rv
would yield White on Black, while on xterm(1) it would yield Black on White.
ALPHA CHANNEL SUPPORT If Xft support has been compiled in and as long as Xft/Xrender/X don't get their act together, rxvt-unicode will do its own alpha channel management:
You can prefix any colour with an opaqueness percentage enclosed in brackets, i.e. "[percent]", where "percent" is a decimal percentage (0-100) that specifies the opacity of the colour, where 0 is completely transparent and 100 is completely opaque. For example, "[50]red" is a half-transparent red, while "[95]#00ff00" is an almost opaque green. This is the recommended format to specify transparency values, and works with all ways to specify a colour.
For complete control, rxvt-unicode also supports "rgba:rrrr/gggg/bbbb/aaaa" (exactly four hex digits/component) colour specifications, where the additional "aaaa" component specifies opacity (alpha) values. The minimum value of 0000 is completely transparent, while "ffff" is completely opaque). The two example colours from earlier could also be specified as "rgba:ff00/0000/0000/8000" and "rgba:0000/ff00/0000/f332".
You probably need to specify "-depth 32", too, to force a visual with alpha channels, and have the luck that your X-server uses ARGB pixel layout, as X is far from just supporting ARGB visuals out of the box, and rxvt-unicode just fudges around.
For example, the following selects an almost completely transparent black background, and an almost opaque pink foreground:
urxvt -depth 32 -bg rgba:0000/0000/0000/4444 -fg "[80]pink"
When not using a background image, then the interpretation of the alpha channel is up to your compositing manager (most interpret it as transparency of course).
When using a background pixmap or pseudo-transparency, then the background colour will always behave as if it were completely transparent (so the background image shows instead), regardless of how it was specified, while other colours will either be transparent as specified (the background image will show through) on servers supporting the RENDER extension, or fully opaque on servers not supporting the RENDER EXTENSION.
Please note that due to bugs in Xft, specifying alpha values might result in garbage being displayed when the X-server does not support the RENDER extension.
urxvt sets and/or uses the following environment variables:
TERM Normally set to "rxvt-unicode", unless overwritten at configure time, via resources or on the command line.
COLORTERM Either "rxvt", "rxvt-xpm", depending on whether urxvt was compiled with background image support, and optionally with the added extension "-mono" to indicate that rxvt-unicode runs on a monochrome screen.
COLORFGBG Set to a string of the form "fg;bg" or "fg;xpm;bg", where "fg" is the colour code used as default foreground/text colour (or the string "default" to indicate that the default-colour escape sequence is to be used), "bg" is the colour code used as default background colour (or the string "default"), and "xpm" is the string "default" if urxvt was compiled with background image support. Libraries like "ncurses" and "slang" can (and do) use this information to optimize screen output.
WINDOWID Set to the (decimal) X Window ID of the urxvt window (the toplevel window, which usually has subwindows for the scrollbar, the terminal window and so on).
TERMINFO Set to the terminfo directory iff urxvt was configured with "--with-terminfo=PATH".
DISPLAY Used by urxvt to connect to the display and set to the correct display in its child processes if "-display" isn't used to override. It defaults to ":0" if it doesn't exist.
SHELL The shell to be used for command execution, defaults to "/bin/sh".
RXVT_SOCKET [sic] The unix domain socket path used by urxvtc(1) and urxvtd(1).
Default $HOME/.urxvt/urxvtd-<nodename>.
URXVT_PERL_LIB Additional :-separated library search path for perl extensions. Will be searched after -perl-lib but before ~/.urxvt/ext and the system library directory.
URXVT_PERL_VERBOSITY See urxvtperl(3).
HOME Used to locate the default directory for the unix domain socket for daemon communications and to locate various resource files (such as ".Xdefaults")
XAPPLRESDIR Directory where application-specific X resource files are located.
XENVIRONMENT If set and accessible, gives the name of a X resource file to be loaded by urxvt.
/usr/lib/X11/rgb.txt Colour names.
urxvt(7), urxvtc(1), urxvtd(1), urxvt-extensions(1), urxvtperl(3), xterm(1), sh(1), resize(1), X(1), pty(4), tty(4), utmp(5)
Project Coordinator Marc A. Lehmann <rxvt-unicode@schmorp.de>.
<http://software.schmorp.de/pkg/rxvt-unicode.html>
John Bovey University of Kent, 1992, wrote the original Xvt.
Rob Nation <nation@rocket.sanders.lockheed.com> very heavily modified Xvt and came up with Rxvt
Angelo Haritsis <ah@doc.ic.ac.uk> wrote the Greek Keyboard Input (no longer in code)
mj olesen <olesen@me.QueensU.CA> Wrote the menu system.
Project Coordinator (changes.txt 2.11 to 2.21)
Oezguer Kesim <kesim@math.fu-berlin.de> Project Coordinator (changes.txt 2.21a to 2.4.5)
Geoff Wing <gcw@pobox.com> Rewrote screen display and text selection routines.
Project Coordinator (changes.txt 2.4.6 - rxvt-unicode)
Marc Alexander Lehmann <rxvt-unicode@schmorp.de> Forked rxvt-unicode, unicode support, rewrote almost all the code, perl extension, random hacks, numerous bugfixes and extensions.
Project Coordinator (Changes 1.0 -)
Emanuele Giaquinta <emanuele.giaquinta@gmail.com> pty/utmp code rewrite, image code improvements, many random hacks and bugfixes.
VMWARE-CHECKVM(1)                 Open VM Tools                VMWARE-CHECKVM(1)
vmware-checkvm - Check if running in a VM or not
vmware-checkvm
This is a simple console application and can be run as any user. vmware-checkvm check if is running in a VM (returns 0) or not (returns 1).
vmware-checkvm has no options.
vmware-toolbox-cmd(1) libguestlib(3) libvmtools(3) vmware-xferlogs(1) vmware-user-suid-wrapper(1)
More information about vmware-checkvm and the Open VM Tools can be found at <http://open-vm-tools.sourceforge.net/>.
Open VM Tools were written by VMware, Inc. <http://www.vmware.com/>.
This manual page was put together from homepage materials by Daniel Baumann <mail@daniel-baumann.ch>, for the Debian project (but may be used by others).
MONGODUMP(1)                 General Commands Manual                MONGODUMP(1)
mongodump - export MongoDB data from a server to BSON files
mongodump [options]
The mongodump program allows exporting the contents of a running MongoDB instance to BSON files. By default it will export all data, but export can be limited to a specific collection or database.
See mongodump --help for a list supported options and their descriptions.
mongorestore(1), bsondump(1)
The full documentation of mongodump can be found at https://docs.mongodb.com/manual/reference/program/mongodump/.
mongodump was written by MongoDB, Inc. and is licensed under the Apache License, Version 2.0.
MILLER(1)                                                              MILLER(1)
miller - like awk, sed, cut, join, and sort for name-indexed data such as CSV and tabular JSON.
Usage: mlr [I/O options] {verb} [verb-dependent options ...] {zero or more file names}
Miller operates on key-value-pair data while the familiar Unix tools operate on integer-indexed fields: if the natural data structure for the latter is the array, then Miller's natural data structure is the insertion-ordered hash map.  This encompasses a variety of data formats, including but not limited to the familiar CSV, TSV, and JSON.  (Miller can handle positionally-indexed data as a special case.) This manpage documents Miller v5.10.3.
COMMAND-LINE SYNTAX mlr --csv cut -f hostname,uptime mydata.csv mlr --tsv --rs lf filter '$status != "down" && $upsec >= 10000' *.tsv mlr --nidx put '$sum = $7 < 0.0 ? 3.5 : $7 + 2.1*$8' *.dat grep -v '^#' /etc/group | mlr --ifs : --nidx --opprint label group,pass,gid,member then sort -f group mlr join -j account_id -f accounts.dat then group-by account_name balances.dat mlr --json put '$attr = sub($attr, "([0-9]+)_([0-9]+)_.*", "\1:\2")' data/*.json mlr stats1 -a min,mean,max,p10,p50,p90 -f flag,u,v data/* mlr stats2 -a linreg-pca -f u,v -g shape data/* mlr put -q '@sum[$a][$b] += $x; end {emit @sum, "a", "b"}' data/* mlr --from estimates.tbl put ' for (k,v in $*) { if (is_numeric(v) && k =~ "^[t-z].*$") { $sum += v; $count += 1 } } $mean = $sum / $count # no assignment if count unset' mlr --from infile.dat put -f analyze.mlr mlr --from infile.dat put 'tee > "./taps/data-".$a."-".$b, $*' mlr --from infile.dat put 'tee | "gzip > ./taps/data-".$a."-".$b.".gz", $*' mlr --from infile.dat put -q '@v=$*; dump | "jq .[]"' mlr --from infile.dat put  '(NR % 1000 == 0) { print > stderr, "Checkpoint ".NR}'
DATA FORMATS DKVP: delimited key-value pairs (Miller default format) +---------------------+ | apple=1,bat=2,cog=3 | Record 1: "apple" => "1", "bat" => "2", "cog" => "3" | dish=7,egg=8,flint  | Record 2: "dish" => "7", "egg" => "8", "3" => "flint" +---------------------+
NIDX: implicitly numerically indexed (Unix-toolkit style) +---------------------+ | the quick brown     | Record 1: "1" => "the", "2" => "quick", "3" => "brown" | fox jumped          | Record 2: "1" => "fox", "2" => "jumped" +---------------------+
CSV/CSV-lite: comma-separated values with separate header line +---------------------+ | apple,bat,cog       | | 1,2,3               | Record 1: "apple => "1", "bat" => "2", "cog" => "3" | 4,5,6               | Record 2: "apple" => "4", "bat" => "5", "cog" => "6" +---------------------+
Tabular JSON: nested objects are supported, although arrays within them are not: +---------------------+ | {                   | |  "apple": 1,        | Record 1: "apple" => "1", "bat" => "2", "cog" => "3" |  "bat": 2,          | |  "cog": 3           | | }                   | | {                   | |   "dish": {         | Record 2: "dish:egg" => "7", "dish:flint" => "8", "garlic" => "" |     "egg": 7,       | |     "flint": 8      | |   },                | |   "garlic": ""      | | }                   | +---------------------+
PPRINT: pretty-printed tabular +---------------------+ | apple bat cog       | | 1     2   3         | Record 1: "apple => "1", "bat" => "2", "cog" => "3" | 4     5   6         | Record 2: "apple" => "4", "bat" => "5", "cog" => "6" +---------------------+
XTAB: pretty-printed transposed tabular +---------------------+ | apple 1             | Record 1: "apple" => "1", "bat" => "2", "cog" => "3" | bat   2             | | cog   3             | |                     | | dish 7              | Record 2: "dish" => "7", "egg" => "8" | egg  8              | +---------------------+
Markdown tabular (supported for output only): +-----------------------+ | | apple | bat | cog | | | | ---   | --- | --- | | | | 1     | 2   | 3   | | Record 1: "apple => "1", "bat" => "2", "cog" => "3" | | 4     | 5   | 6   | | Record 2: "apple" => "4", "bat" => "5", "cog" => "6" +-----------------------+
In the following option flags, the version with "i" designates the input stream, "o" the output stream, and the version without prefix sets the option for both input and output stream. For example: --irs sets the input record separator, --ors the output record separator, and --rs sets both the input and output separator to the given value.
HELP OPTIONS -h or --help                 Show this message. --version                    Show the software version. {verb name} --help           Show verb-specific help. --help-all-verbs             Show help on all verbs. -l or --list-all-verbs       List only verb names. -L                           List only verb names, one per line. -f or --help-all-functions   Show help on all built-in functions. -F                           Show a bare listing of built-in functions by name. -k or --help-all-keywords    Show help on all keywords. -K                           Show a bare listing of keywords by name.
VERB LIST altkv bar bootstrap cat check clean-whitespace count count-distinct count-similar cut decimate fill-down filter format-values fraction grep group-by group-like having-fields head histogram join label least-frequent merge-fields most-frequent nest nothing put regularize remove-empty-columns rename reorder repeat reshape sample sec2gmt sec2gmtdate seqgen shuffle skip-trivial-records sort sort-within-records stats1 stats2 step tac tail tee top uniq unsparsify
FUNCTION LIST + + - - * / // .+ .+ .- .- .* ./ .// % ** | ^ & ~ << >> bitcount == != =~ !=~ > >= < <= && || ^^ ! ? : . gsub regextract regextract_or_else strlen sub ssub substr tolower toupper truncate capitalize lstrip rstrip strip collapse_whitespace clean_whitespace system abs acos acosh asin asinh atan atan2 atanh cbrt ceil cos cosh erf erfc exp expm1 floor invqnorm log log10 log1p logifit madd max mexp min mmul msub pow qnorm round roundm sgn sin sinh sqrt tan tanh urand urandrange urand32 urandint dhms2fsec dhms2sec fsec2dhms fsec2hms gmt2sec localtime2sec hms2fsec hms2sec sec2dhms sec2gmt sec2gmt sec2gmtdate sec2localtime sec2localtime sec2localdate sec2hms strftime strftime_local strptime strptime_local systime is_absent is_bool is_boolean is_empty is_empty_map is_float is_int is_map is_nonempty_map is_not_empty is_not_map is_not_null is_null is_numeric is_present is_string asserting_absent asserting_bool asserting_boolean asserting_empty asserting_empty_map asserting_float asserting_int asserting_map asserting_nonempty_map asserting_not_empty asserting_not_map asserting_not_null asserting_null asserting_numeric asserting_present asserting_string boolean float fmtnum hexfmt int string typeof depth haskey joink joinkv joinv leafcount length mapdiff mapexcept mapselect mapsum splitkv splitkvx splitnv splitnvx
Please use "mlr --help-function {function name}" for function-specific help.
I/O FORMATTING --idkvp   --odkvp   --dkvp      Delimited key-value pairs, e.g "a=1,b=2" (this is Miller's default format).
--inidx   --onidx   --nidx      Implicitly-integer-indexed fields (Unix-toolkit style). -T                              Synonymous with "--nidx --fs tab".
--icsv    --ocsv    --csv       Comma-separated value (or tab-separated with --fs tab, etc.)
--itsv    --otsv    --tsv       Keystroke-savers for "--icsv --ifs tab", "--ocsv --ofs tab", "--csv --fs tab". --iasv    --oasv    --asv       Similar but using ASCII FS 0x1f and RS 0x1e --iusv    --ousv    --usv       Similar but using Unicode FS U+241F (UTF-8 0xe2909f) and RS U+241E (UTF-8 0xe2909e)
--icsvlite --ocsvlite --csvlite Comma-separated value (or tab-separated with --fs tab, etc.). The 'lite' CSV does not handle RFC-CSV double-quoting rules; is slightly faster; and handles heterogeneity in the input stream via empty newline followed by new header line. See also http://johnkerl.org/miller/doc/file-formats.html#CSV/TSV/etc.
--itsvlite --otsvlite --tsvlite Keystroke-savers for "--icsvlite --ifs tab", "--ocsvlite --ofs tab", "--csvlite --fs tab". -t                              Synonymous with --tsvlite. --iasvlite --oasvlite --asvlite Similar to --itsvlite et al. but using ASCII FS 0x1f and RS 0x1e --iusvlite --ousvlite --usvlite Similar to --itsvlite et al. but using Unicode FS U+241F (UTF-8 0xe2909f) and RS U+241E (UTF-8 0xe2909e)
--ipprint --opprint --pprint    Pretty-printed tabular (produces no output until all input is in). --right     Right-justifies all fields for PPRINT output. --barred    Prints a border around PPRINT output (only available for output).
--omd                 Markdown-tabular (only available for output).
--ixtab   --oxtab   --xtab      Pretty-printed vertical-tabular. --xvright   Right-justifies values for XTAB format.
--ijson   --ojson   --json      JSON tabular: sequence or list of one-level maps: {...}{...} or [{...},{...}]. --json-map-arrays-on-input    JSON arrays are unmillerable. --json-map-arrays-on-input --json-skip-arrays-on-input   is the default: arrays are converted to integer-indexed --json-fatal-arrays-on-input  maps. The other two options cause them to be skipped, or to be treated as errors.  Please use the jq tool for full JSON (pre)processing. --jvstack   Put one key-value pair per line for JSON output. --jsonx --ojsonx  Keystroke-savers for --json --jvstack --jsonx --ojsonx  and --ojson --jvstack, respectively. --jlistwrap Wrap JSON output in outermost [ ]. --jknquoteint Do not quote non-string map keys in JSON output. --jvquoteall Quote map values in JSON output, even if they're numeric. --jflatsep {string} Separator for flattening multi-level JSON keys, e.g. '{"a":{"b":3}}' becomes a:b => 3 for non-JSON formats. Defaults to :.
-p is a keystroke-saver for --nidx --fs space --repifs
Examples: --csv for CSV-formatted input and output; --idkvp --opprint for DKVP-formatted input and pretty-printed output.
Please use --iformat1 --oformat2 rather than --format1 --oformat2. The latter sets up input and output flags for format1, not all of which are overridden in all cases by setting output format to format2.
COMMENTS IN DATA --skip-comments                 Ignore commented lines (prefixed by "#") within the input. --skip-comments-with {string}   Ignore commented lines within input, with specified prefix. --pass-comments                 Immediately print commented lines (prefixed by "#") within the input. --pass-comments-with {string}   Immediately print commented lines within input, with specified prefix. Notes: * Comments are only honored at the start of a line. * In the absence of any of the above four options, comments are data like any other text. * When pass-comments is used, comment lines are written to standard output immediately upon being read; they are not part of the record stream. Results may be counterintuitive. A suggestion is to place comments at the start of data files.
FORMAT-CONVERSION KEYSTROKE-SAVERS As keystroke-savers for format-conversion you may use the following: --c2t --c2d --c2n --c2j --c2x --c2p --c2m --t2c       --t2d --t2n --t2j --t2x --t2p --t2m --d2c --d2t       --d2n --d2j --d2x --d2p --d2m --n2c --n2t --n2d       --n2j --n2x --n2p --n2m --j2c --j2t --j2d --j2n       --j2x --j2p --j2m --x2c --x2t --x2d --x2n --x2j       --x2p --x2m --p2c --p2t --p2d --p2n --p2j --p2x       --p2m The letters c t d n j x p m refer to formats CSV, TSV, DKVP, NIDX, JSON, XTAB, PPRINT, and markdown, respectively. Note that markdown format is available for output only.
COMPRESSED I/O --prepipe {command} This allows Miller to handle compressed inputs. You can do without this for single input files, e.g. "gunzip < myfile.csv.gz | mlr ...".
However, when multiple input files are present, between-file separations are lost; also, the FILENAME variable doesn't iterate. Using --prepipe you can specify an action to be taken on each input file. This pre-pipe command must be able to read from standard input; it will be invoked with {command} < {filename}. Examples: mlr --prepipe 'gunzip' mlr --prepipe 'zcat -cf' mlr --prepipe 'xz -cd' mlr --prepipe cat mlr --prepipe-gunzip mlr --prepipe-zcat Note that this feature is quite general and is not limited to decompression utilities. You can use it to apply per-file filters of your choice. For output compression (or other) utilities, simply pipe the output: mlr ... | {your compression command}
There are shorthands --prepipe-zcat and --prepipe-gunzip which are valid in .mlrrc files. The --prepipe flag is not valid in .mlrrc files since that would put execution of the prepipe command under control of the .mlrrc file.
SEPARATORS --rs     --irs     --ors              Record separators, e.g. 'lf' or '\r\n' --fs     --ifs     --ofs  --repifs    Field separators, e.g. comma --ps     --ips     --ops              Pair separators, e.g. equals sign
Notes about line endings: * Default line endings (--irs and --ors) are "auto" which means autodetect from the input file format, as long as the input file(s) have lines ending in either LF (also known as linefeed, '\n', 0x0a, Unix-style) or CRLF (also known as carriage-return/linefeed pairs, '\r\n', 0x0d 0x0a, Windows style). * If both irs and ors are auto (which is the default) then LF input will lead to LF output and CRLF input will lead to CRLF output, regardless of the platform you're running on. * The line-ending autodetector triggers on the first line ending detected in the input stream. E.g. if you specify a CRLF-terminated file on the command line followed by an LF-terminated file then autodetected line endings will be CRLF. * If you use --ors {something else} with (default or explicitly specified) --irs auto then line endings are autodetected on input and set to what you specify on output. * If you use --irs {something else} with (default or explicitly specified) --ors auto then the output line endings used are LF on Unix/Linux/BSD/MacOSX, and CRLF on Windows.
Notes about all other separators: * IPS/OPS are only used for DKVP and XTAB formats, since only in these formats do key-value pairs appear juxtaposed. * IRS/ORS are ignored for XTAB format. Nominally IFS and OFS are newlines; XTAB records are separated by two or more consecutive IFS/OFS -- i.e. a blank line. Everything above about --irs/--ors/--rs auto becomes --ifs/--ofs/--fs auto for XTAB format. (XTAB's default IFS/OFS are "auto".) * OFS must be single-character for PPRINT format. This is because it is used with repetition for alignment; multi-character separators would make alignment impossible. * OPS may be multi-character for XTAB format, in which case alignment is disabled. * TSV is simply CSV using tab as field separator ("--fs tab"). * FS/PS are ignored for markdown format; RS is used. * All FS and PS options are ignored for JSON format, since they are not relevant to the JSON format. * You can specify separators in any of the following ways, shown by example: - Type them out, quoting as necessary for shell escapes, e.g. "--fs '|' --ips :" - C-style escape sequences, e.g. "--rs '\r\n' --fs '\t'". - To avoid backslashing, you can use any of the following names: cr crcr newline lf lflf crlf crlfcrlf tab space comma pipe slash colon semicolon equals * Default separators by format: File format  RS       FS       PS gen          N/A      (N/A)    (N/A) dkvp         auto     ,        = json         auto     (N/A)    (N/A) nidx         auto     space    (N/A) csv          auto     ,        (N/A) csvlite      auto     ,        (N/A) markdown     auto     (N/A)    (N/A) pprint       auto     space    (N/A) xtab         (N/A)    auto     space
CSV-SPECIFIC OPTIONS --implicit-csv-header Use 1,2,3,... as field labels, rather than from line 1 of input files. Tip: combine with "label" to recreate missing headers. --allow-ragged-csv-input|--ragged If a data line has fewer fields than the header line, fill remaining keys with empty string. If a data line has more fields than the header line, use integer field labels as in the implicit-header case. --headerless-csv-output   Print only CSV data lines. -N                 Keystroke-saver for --implicit-csv-header --headerless-csv-output.
DOUBLE-QUOTING FOR CSV/CSVLITE OUTPUT --quote-all        Wrap all fields in double quotes --quote-none       Do not wrap any fields in double quotes, even if they have OFS or ORS in them --quote-minimal    Wrap fields in double quotes only if they have OFS or ORS in them (default) --quote-numeric    Wrap fields in double quotes only if they have numbers in them --quote-original   Wrap fields in double quotes if and only if they were quoted on input. This isn't sticky for computed fields: e.g. if fields a and b were quoted on input and you do "put '$c = $a . $b'" then field c won't inherit a or b's was-quoted-on-input flag.
NUMERICAL FORMATTING --ofmt {format}    E.g. %.18lf, %.0lf. Please use sprintf-style codes for double-precision. Applies to verbs which compute new values, e.g. put, stats1, stats2. See also the fmtnum function within mlr put (mlr --help-all-functions). Defaults to %lf.
OTHER OPTIONS --seed {n} with n of the form 12345678 or 0xcafefeed. For put/filter urand()/urandint()/urand32(). --nr-progress-mod {m}, with m a positive integer: print filename and record count to stderr every m input records. --from {filename}  Use this to specify an input file before the verb(s), rather than after. May be used more than once. Example: "mlr --from a.dat --from b.dat cat" is the same as "mlr cat a.dat b.dat". -n                 Process no input files, nor standard input either. Useful for mlr put with begin/end statements only. (Same as --from /dev/null.) Also useful in "mlr -n put -v '...'" for analyzing abstract syntax trees (if that's your thing). -I                 Process files in-place. For each file name on the command line, output is written to a temp file in the same directory, which is then renamed over the original. Each file is processed in isolation: if the output format is CSV, CSV headers will be present in each output file; statistics are only over each file's own records; and so on.
THEN-CHAINING Output of one verb may be chained as input to another using "then", e.g. mlr stats1 -a min,mean,max -f flag,u,v -g color then sort -f color
AUXILIARY COMMANDS Miller has a few otherwise-standalone executables packaged within it. They do not participate in any other parts of Miller. Available subcommands: aux-list lecat termcvt hex unhex netbsd-strptime For more information, please invoke mlr {subcommand} --help
You can set up personal defaults via a $HOME/.mlrrc and/or ./.mlrrc. For example, if you usually process CSV, then you can put "--csv" in your .mlrrc file and that will be the default input/output format unless otherwise specified on the command line.
The .mlrrc file format is one "--flag" or "--option value" per line, with the leading "--" optional. Hash-style comments and blank lines are ignored.
Sample .mlrrc: # Input and output formats are CSV by default (unless otherwise specified # on the mlr command line): csv # These are no-ops for CSV, but when I do use JSON output, I want these # pretty-printing options to be used: jvstack jlistwrap
How to specify location of .mlrrc: * If $MLRRC is set: o If its value is "__none__" then no .mlrrc files are processed. o Otherwise, its value (as a filename) is loaded and processed. If there are syntax errors, they abort mlr with a usage message (as if you had mistyped something on the command line). If the file can't be loaded at all, though, it is silently skipped. o Any .mlrrc in your home directory or current directory is ignored whenever $MLRRC is set in the environment. * Otherwise: o If $HOME/.mlrrc exists, it's then processed as above. o If ./.mlrrc exists, it's then also processed as above. (I.e. current-directory .mlrrc defaults are stacked over home-directory .mlrrc defaults.)
See also: https://johnkerl.org/miller/doc/customization.html
altkv Usage: mlr altkv [no options] Given fields with values of the form a,b,c,d,e,f emits a=b,c=d,e=f pairs.
bar Usage: mlr bar [options] Replaces a numeric field with a number of asterisks, allowing for cheesy bar plots. These align best with --opprint or --oxtab output format. Options: -f   {a,b,c}      Field names to convert to bars. -c   {character}  Fill character: default '*'. -x   {character}  Out-of-bounds character: default '#'. -b   {character}  Blank character: default '.'. --lo {lo}         Lower-limit value for min-width bar: default '0.000000'. --hi {hi}         Upper-limit value for max-width bar: default '100.000000'. -w   {n}          Bar-field width: default '40'. --auto            Automatically computes limits, ignoring --lo and --hi. Holds all records in memory before producing any output.
bootstrap Usage: mlr bootstrap [options] Emits an n-sample, with replacement, of the input records. Options: -n {number} Number of samples to output. Defaults to number of input records. Must be non-negative. See also mlr sample and mlr shuffle.
cat Usage: mlr cat [options] Passes input records directly to output. Most useful for format conversion. Options: -n        Prepend field "n" to each record with record-counter starting at 1 -g {comma-separated field name(s)} When used with -n/-N, writes record-counters keyed by specified field name(s). -v        Write a low-level record-structure dump to stderr. -N {name} Prepend field {name} to each record with record-counter starting at 1