Main reference

TODO: keep splititng up this big file

String literals

You can use the following backslash escapes for strings such as between the double quotes in contexts such as mlr filter '$name =~ "..."', mlr put '$name = $othername . "..."', mlr put '$name = sub($name, "...", "..."), etc.:

  • \a: ASCII code 0x07 (alarm/bell)

  • \b: ASCII code 0x08 (backspace)

  • \f: ASCII code 0x0c (formfeed)

  • \n: ASCII code 0x0a (LF/linefeed/newline)

  • \r: ASCII code 0x0d (CR/carriage return)

  • \t: ASCII code 0x09 (tab)

  • \v: ASCII code 0x0b (vertical tab)

  • \\: backslash

  • \": double quote

  • \123: Octal 123, etc. for \000 up to \377

  • \x7f: Hexadecimal 7f, etc. for \x00 up to \xff

See also https://en.wikipedia.org/wiki/Escape_sequences_in_C.

These replacements apply only to strings you key in for the DSL expressions for filter and put: that is, if you type \t in a string literal for a filter/put expression, it will be turned into a tab character. If you want a backslash followed by a t, then please type \\t.

However, these replacements are not done automatically within your data stream. If you wish to make these replacements, you can do, for example, for a field named field, mlr put '$field = gsub($field, "\\t", "\t")'. If you need to make such a replacement for all fields in your data, you should probably simply use the system sed command.