summaryrefslogtreecommitdiffstats
path: root/test/expected/test_cmds.sh_b6a3bb78e9d60e5e1f5ce5b18e40d2f1662707ab.out
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-04 17:44:55 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-04 17:44:55 +0000
commit5068d34c08f951a7ea6257d305a1627b09a95817 (patch)
tree08213e2be853396a3b07ce15dbe222644dcd9a89 /test/expected/test_cmds.sh_b6a3bb78e9d60e5e1f5ce5b18e40d2f1662707ab.out
parentInitial commit. (diff)
downloadlnav-5068d34c08f951a7ea6257d305a1627b09a95817.tar.xz
lnav-5068d34c08f951a7ea6257d305a1627b09a95817.zip
Adding upstream version 0.11.1.upstream/0.11.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'test/expected/test_cmds.sh_b6a3bb78e9d60e5e1f5ce5b18e40d2f1662707ab.out')
-rw-r--r--test/expected/test_cmds.sh_b6a3bb78e9d60e5e1f5ce5b18e40d2f1662707ab.out4417
1 files changed, 4417 insertions, 0 deletions
diff --git a/test/expected/test_cmds.sh_b6a3bb78e9d60e5e1f5ce5b18e40d2f1662707ab.out b/test/expected/test_cmds.sh_b6a3bb78e9d60e5e1f5ce5b18e40d2f1662707ab.out
new file mode 100644
index 0000000..f828498
--- /dev/null
+++ b/test/expected/test_cmds.sh_b6a3bb78e9d60e5e1f5ce5b18e40d2f1662707ab.out
@@ -0,0 +1,4417 @@
+
+lnav
+
+A fancy log file viewer for the terminal.
+
+Overview
+
+The Logfile Navigator, lnav, is an enhanced log file viewer that takes
+advantage of any semantic information that can be gleaned from the
+files being viewed, such as timestamps and log levels. Using this
+extra semantic information, lnav can do things like interleaving
+messages from different files, generate histograms of messages over
+time, and providing hotkeys for navigating through the file. It is
+hoped that these features will allow the user to quickly and
+efficiently zero in on problems.
+
+Opening Paths/URLs
+
+The main arguments to lnav are the local/remote files, directories,
+glob patterns, or URLs to be viewed. If no arguments are given, the
+default syslog file for your system will be opened. These arguments
+will be polled periodically so that any new data or files will be
+automatically loaded. If a previously loaded file is removed or
+replaced, it will be closed and the replacement opened.
+
+Note: When opening SFTP URLs, if the password is not provided for the
+host, the SSH agent can be used to do authentication.
+
+Options
+
+Lnav takes a list of files to view and/or you can use the flag
+arguments to load well-known log files, such as the syslog log files.
+The flag arguments are:
+
+ β€’  -a  Load all of the most recent log file types.
+ β€’  -r  Recursively load files from the given directory
+ hierarchies.
+ β€’  -R  Load older rotated log files as well.
+
+When using the flag arguments, lnav will look for the files relative
+to the current directory and its parent directories. In other words,
+if you are working within a directory that has the well-known log
+files, those will be preferred over any others.
+
+If you do not want the default syslog file to be loaded when no files
+are specified, you can pass the  -N  flag.
+
+Any files given on the command-line are scanned to determine their log
+file format and to create an index for each line in the file. You do
+not have to manually specify the log file format. The currently
+supported formats are: syslog, apache, strace, tcsh history, and
+generic log files with timestamps.
+
+Lnav will also display data piped in on the standard input. The
+following options are available when doing so:
+
+ β€’  -t  Prepend timestamps to the lines of data being read
+ in on the standard input.
+ β€’  -w file  Write the contents of the standard input to
+ this file.
+
+To automatically execute queries or lnav commands after the files have
+been loaded, you can use the following options:
+
+ β€’  -c cmd  A command, query, or file to execute. The
+ first character determines the type of operation: a colon
+ ( : ) is used for the built-in commands; a semi-colon ( ;
+ ) for SQL queries; and a pipe symbol ( | ) for executing
+ a file containing other commands. For example, to open
+ the file "foo.log" and go to the tenth line in the file,
+ you can do:
+
+ β–Œlnav -c ':goto 10' foo.log 
+
+ This option can be given multiple times to execute
+ multiple operations in sequence.
+ β€’  -f file  A file that contains commands, queries, or
+ files to execute. This option is a shortcut for  -c '|file'
+ . You can use a dash ( - ) to execute commands from the
+ standard input.
+
+To execute commands/queries without opening the interactive text UI,
+you can pass the  -n  option. This combination of options allows you
+to write scripts for processing logs with lnav. For example, to get a
+list of IP addresses that dhclient has bound to in CSV format:
+
+ β–Œ#! /usr/bin/lnav -nf 
+ β–Œ 
+ β–Œ# Usage: dhcp_ip.lnav /var/log/messages 
+ β–Œ# Only include lines that look like: 
+ β–Œ# Apr 29 00:31:56 example-centos5 dhclient: bound to 10.1.10.103 -- renewal in 9938 seconds. 
+ β–Œ 
+ β–Œ:filter-in dhclient: bound to 
+ β–Œ 
+ β–Œ# The log message parser will extract the IP address 
+ β–Œ# as col_0, so we select that and alias it to "dhcp_ip". 
+ β–Œ;SELECT DISTINCT col_0 AS dhcp_ip FROM logline; 
+ β–Œ 
+ β–Œ# Finally, write the results of the query to stdout. 
+ β–Œ:write-csv-to - 
+
+Display
+
+The main part of the display shows the log lines from the files
+interleaved based on time-of-day. New lines are automatically loaded
+as they are appended to the files and, if you are viewing the bottom
+of the files, lnav will scroll down to display the new lines, much
+like  tail -f .
+
+On color displays, the lines will be highlighted as follows:
+
+ β€’ Errors will be colored in red;
+ β€’ warnings will be yellow;
+ β€’ boundaries between days will be underlined; and
+ β€’ various color highlights will be applied to: IP
+ addresses, SQL keywords, XML tags, file and line numbers
+ in Java backtraces, and quoted strings.
+
+To give you an idea of where you are spatially, the right side of the
+display has a proportionally sized 'scroll bar' that indicates your
+current position in the files. The scroll bar will also show areas of
+the file where warnings or errors are detected by coloring the bar
+yellow or red, respectively. Tick marks will also be added to the left
+and right-hand side of the bar, for search hits and bookmarks.
+
+The bar on the left side indicates the file the log message is from. A
+break in the bar means that the next log message comes from a
+different file. The color of the bar is derived from the file name.
+Pressing the left-arrow or  h  will reveal the source file names for
+each message and pressing again will show the full paths.
+
+Above and below the main body are status lines that display a variety
+of information. The top line displays:
+
+ β€’ The current time, configurable by the  /ui/clock-format 
+ property.
+ β€’ The highest priority message from the  lnav_user_notifications 
+ table. You can insert rows into this table to display
+ your own status messages. The default message displayed
+ on startup explains how to focus on the next status line
+ at the top, which is an interactive breadcrumb bar.
+
+The second status line at the top display breadcrumbs for the top line
+in the main view. Pressing  ENTER  will focus input on the breadcrumb
+bar, the cursor keys can be used to select a breadcrumb. The common
+breadcrumbs are:
+
+ β€’ The name of the current view.
+ β€’ In the log view, the timestamp of the top log message.
+ β€’ In the log view, the format of the log file the top log
+ message is from.
+ β€’ The name of the file the top line was pulled from.
+ β€’ If the top line is within a larger chunk of structured
+ data, the path to the value in the top line will be
+ shown.
+
+Notes:
+
+ 1. Pressing  CTRL-A / CTRL-E  will select the first/last
+ breadcrumb.
+ 2. Typing text while a breadcrumb is selected will
+ perform a fuzzy search on the possibilities.
+
+The bottom status bar displays:
+
+ β€’ The line number for the top line in the display.
+ β€’ The current search hit, the total number of hits, and
+ the search term.
+
+If the view supports filtering, there will be a status line showing
+the following:
+
+ β€’ The number of enabled filters and the total number of
+ filters.
+ β€’ The number of lines not displayed because of filtering.
+
+To edit the filters, you can press TAB to change the focus from the
+main view to the filter editor. The editor allows you to create,
+enable/disable, and delete filters easily.
+
+Along with filters, a "Files" panel will also be available for viewing
+and controlling the files that lnav is currently monitoring.
+
+Finally, the last line on the display is where you can enter search
+patterns and execute internal commands, such as converting a
+unix-timestamp into a human-readable date. The command-line is
+implemented using the readline library, so the usual set of keyboard
+shortcuts are available. Most commands and searches also support
+tab-completion.
+
+The body of the display is also used to display other content, such
+as: the help file, histograms of the log messages over time, and SQL
+results. The views are organized into a stack so that any time you
+activate a new view with a key press or command, the new view is
+pushed onto the stack. Pressing the same key again will pop the view
+off of the stack and return you to the previous view. Note that you
+can always use  q  to pop the top view off of the stack.
+
+Default Key Bindings
+
+Views
+
+ Key(s) Action
+═══════════════════════════════════════════════════════════
+ ? View/leave this help message.
+ q Leave the current view or quit the program when in
+ the log file view.
+ Q Similar to  q , except it will try to sync the top
+ time between the current and former views. For
+ example, when leaving the spectrogram view with  Q
+ , the top time in that view will be matched to the
+ top time in the log view.
+ TAB Toggle focusing on the filter editor or the main
+ view.
+ ENTER Focus on the breadcrumb bar.
+ a/A Restore the view that was previously popped with  q
+ / Q . The  A  hotkey will try to match the top
+ times between the two views.
+ X Close the current text file or log file.
+
+Spatial Navigation
+
+ Key(s) Action
+═══════════════════════════════════════════════════════════════
+ g/Home Move to the top of the file.
+ G/End Move to the end of the file. If the view is
+ already at the end, it will move to the last line.
+ SPACE/PgDn Move down a page.
+ b/PgUp Move up a page.
+ j/↓ Move down a line.
+ k/↑ Move up a line.
+ h/← Move to the left. In the log view, moving left
+ will reveal the source log file names for each
+ line. Pressing again will reveal the full path.
+ l/β†’ Move to the right.
+ H/Shift ← Move to the left by a smaller increment.
+ L/Shift β†’ Move to the right by a smaller increment.
+ e/E Move to the next/previous error.
+ w/W Move to the next/previous warning.
+ n/N Move to the next/previous search hit. When pressed
+ repeatedly within a short time, the view will move
+ at least a full page at a time instead of moving
+ to the next hit.
+ f/F Move to the next/previous file. In the log view,
+ this moves to the next line from a different file.
+ In the text view, this rotates the view to the
+ next file.
+ >/< Move horizontally to the next/previous search hit.
+ o/O Move forward/backward to the log message with a
+ matching 'operation ID' (opid) field.
+ u/U Move forward/backward through any user bookmarks
+ you have added using the 'm' key. This hotkey will
+ also jump to the start of any log partitions that
+ have been created with the 'partition-name'
+ command.
+ s/S Move to the next/previous "slow down" in the log
+ message rate. A slow down is detected by measuring
+ how quickly the message rate has changed over the
+ previous several messages. For example, if one
+ message is logged every second for five seconds
+ and then the last message arrives five seconds
+ later, the last message will be highlighted as a
+ slow down.
+ {/} Move to the previous/next location in history.
+ Whenever you jump to a new location in the view,
+ the location will be added to the history. The
+ history is not updated when using only the arrow
+ keys.
+
+Chronological Navigation
+
+ Key(s) Action
+══════════════════════════════════════════════════════════════════
+ d/D Move forward/backward 24 hours from the current
+ position in the log file.
+ 1-6/Shift 1-6 Move to the next/previous n'th ten minute of the
+ hour. For example, '4' would move to the first log
+ line in the fortieth minute of the current hour in
+ the log. And, '6' would move to the next hour
+ boundary.
+ 7/8 Move to the previous/next minute.
+ 0/Shift 0 Move to the next/previous day boundary.
+ r/R Move forward/backward based on the relative time
+ that was last used with the 'goto' command. For
+ example, executing ':goto a minute later' will
+ move the log view forward a minute and then
+ pressing 'r' will move it forward a minute again.
+ Pressing 'R' will then move the view in the
+ opposite direction, so backwards a minute.
+
+Bookmarks
+
+ Key(s) Action
+═══════════════════════════════════════════════════════════
+ m Mark/unmark the line at the top of the display.
+ The line will be highlighted with reverse video to
+ indicate that it is a user bookmark. You can use
+ the  u  hotkey to iterate through marks you have
+ added.
+ M Mark/unmark all the lines between the top of the
+ display and the last line marked/unmarked.
+ J Mark/unmark the next line after the previously
+ marked line.
+ K Like  J  except it toggles the mark on the
+ previous line.
+ c Copy the marked text to the X11 selection buffer
+ or OS X clipboard.
+ C Clear all marked lines.
+
+Display options
+
+ Key(s) Action
+══════════════════════════════════════════════════════════════════
+ P Switch to/from the pretty-printed view of the log
+ or text files currently displayed. In this view,
+ structured data, such as XML, will be reformatted
+ to make it easier to read.
+ t Switch to/from the text file view. The text file
+ view is for any files that are not recognized as
+ log files.
+ = Pause/unpause loading of new file data.
+ Ctrl-L (Lo-fi mode) Exit screen-mode and write the
+ displayed log lines in plain text to the terminal
+ until a key is pressed. Useful for copying long
+ lines from the terminal without picking up any of
+ the extra decorations.
+ T Toggle the display of the "elapsed time" column
+ that shows the time elapsed since the beginning of
+ the logs or the offset from the previous bookmark.
+ Sharp changes in the message rate are highlighted
+ by coloring the separator between the time column
+ and the log message. A red highlight means the
+ message rate has slowed down and green means it
+ has sped up. You can use the "s/S" hotkeys to scan
+ through the slow downs.
+ i View/leave a histogram of the log messages over
+ time. The histogram counts the number of displayed
+ log lines for each bucket of time. The bars are
+ layed out horizontally with colored segments
+ representing the different log levels. You can use
+ the  z  hotkey to change the size of the time
+ buckets (e.g. ten minutes, one hour, one day).
+ I Switch between the log and histogram views while
+ keeping the time displayed at the top of each view
+ in sync. For example, if the top line in the log
+ view is "11:40", hitting  I  will switch to the
+ histogram view and scrolled to display "11:00" at
+ the top (if the zoom level is hours).
+ z/Shift Z Zoom in or out one step in the histogram view.
+ v Switch to/from the SQL result view.
+ V Switch between the log and SQL result views while
+ keeping the top line number in the log view in
+ sync with the log_line column in the SQL view. For
+ example, doing a query that selects for
+ "log_idle_msecs" and "log_line", you can move the
+ top of the SQL view to a line and hit 'V' to
+ switch to the log view and move to the line number
+ that was selected in the "log_line" column. If
+ there is no "log_line" column, lnav will find the
+ first column with a timestamp and move to
+ corresponding time in the log view.
+ TAB/Shift TAB In the SQL result view, cycle through the columns
+ that are graphed. Initially, all number values are
+ displayed in a stacked graph. Pressing TAB will
+ change the display to only graph the first column.
+ Repeatedly pressing TAB will cycle through the
+ columns until they are all graphed again.
+ p In the log view: enable or disable the display of
+ the fields that the log message parser knows about
+ or has discovered. This overlay is temporarily
+ enabled when the semicolon key (;) is pressed so
+ that it is easier to write queries.
+ In the DB view: enable or disable the display of
+ values in columns containing JSON-encoded values
+ in the top row. The overlay will display the
+ JSON-Pointer reference and value for all fields in
+ the JSON data.
+ CTRL-W Toggle word-wrapping.
+ CTRL-P Show/hide the data preview panel that may be
+ opened when entering commands or SQL queries.
+ CTRL-F Toggle the enabled/disabled state of all filters
+ in the current view.
+ x Toggle the hiding of log message fields. The
+ hidden fields will be replaced with three bullets
+ and highlighted in yellow.
+ F2 Toggle mouse support.
+
+Query
+
+ Key(s) Action
+════════════════════════════════════════════════════════════════════════
+ /regexp Start a search for the given regular expression.
+ The search is live, so when there is a pause in
+ typing, the currently running search will be
+ canceled and a new one started. The first ten
+ lines that match the search will be displayed in
+ the preview window at the bottom of the view.
+ History is maintained for your searches so you can
+ rerun them easily. Words that are currently
+ displayed are also available for tab-completion,
+ so you can easily search for values without
+ needing to copy-and-paste the string. If there is
+ an error encountered while trying to interpret the
+ expression, the error will be displayed in red on
+ the status line. While the search is active, the
+ 'hits' field in the status line will be green,
+ when finished it will turn back to black.
+ :<command> Execute an internal command. The commands are
+ listed below. History is also supported in this
+ context as well as tab-completion for commands and
+ some arguments. The result of the command replaces
+ the command you typed.
+ ;<sql> Execute an SQL query. Most supported log file
+ formats provide a sqlite virtual table backend
+ that can be used in queries. See the SQL section
+ below for more information.
+ |<script> [arg1...] Execute an lnav script contained in a format
+ directory (e.g. ~/.lnav/formats/default). The
+ script can contain lines starting with  : ,  ; ,
+ or  |  to execute commands, SQL queries or execute
+ other files in lnav. Any values after the script
+ name are treated as arguments can be referenced in
+ the script using  $1 ,  $2 , and so on, like in a
+ shell script.
+ CTRL+], ESCAPE Abort command-line entry started with  / ,  : ,  ;
+ , or  | .
+
+ β–ŒNote: The regular expression format used by lnav is PCRE[1]
+ β–Œ(Perl-Compatible Regular Expressions).
+ β–Œ
+ β–Œ β–Œ[1] - http://perldoc.perl.org/perlre.html
+ β–Œ
+ β–ŒIf the search string is not valid PCRE, a search is done for
+ β–Œthe exact string instead of doing a regex search.
+
+Session
+
+ Key(s) Action
+═══════════════════════════════════════════════════════════
+ CTRL-R Reset the session state. This will save the
+ current session state (filters, highlights) and
+ then reset the state to the factory default.
+
+Filter Editor
+
+The following hotkeys are only available when the focus is on the
+filter editor. You can change the focus by pressing TAB.
+
+ Key(s) Action
+═══════════════════════════════════════════════════════════
+ q Switch the focus back to the main view.
+ j/↓ Select the next filter.
+ k/↑ Select the previous filter.
+ o Create a new "out" filter.
+ i Create a new "in" filter .
+ SPACE Toggle the enabled/disabled state of the currently
+ selected filter.
+ t Toggle the type of filter between "in" and "out".
+ ENTER Edit the selected filter.
+ D Delete the selected filter.
+
+Mouse Support (experimental)
+
+If you are using Xterm, or a compatible terminal, you can use the
+mouse to mark lines of text and move the view by grabbing the
+scrollbar.
+
+NOTE: You need to manually enable this feature by setting the LNAV_EXP
+environment variable to "mouse". F2 toggles mouse support.
+
+SQL Queries (experimental)
+
+Lnav has support for performing SQL queries on log files using the
+Sqlite3 "virtual" table feature. For all supported log file types,
+lnav will create tables that can be queried using the subset of SQL
+that is supported by Sqlite3. For example, to get the top ten URLs
+being accessed in any loaded Apache log files, you can execute:
+
+ β–Œ;SELECT cs_uri_stem, count(*) AS total FROM access_log 
+ β–Œ GROUP BY cs_uri_stem ORDER BY total DESC LIMIT 10; 
+
+The query result view shows the results and graphs any numeric values
+found in the result, much like the histogram view.
+
+The builtin set of log tables are listed below. Note that only the log
+messages that match a particular format can be queried by a particular
+table. You can find the file format and table name for the top log
+message by looking in the upper right hand corner of the log file
+view.
+
+Some commonly used format tables are:
+
+ Name Description
+════════════════════════════════════════════════════════════════
+ access_log Apache common access log format
+ syslog_log Syslog format
+ strace_log Strace log format
+ generic_log 'Generic' log format. This table contains messages
+ from files that have a very simple format with a
+ leading timestamp followed by the message.
+
+NOTE: You can get a dump of the schema for the internal tables, and
+any attached databases, by running the  .schema  SQL command.
+
+The columns available for the top log line in the view will
+automatically be displayed after pressing the semicolon ( ; ) key. All
+log tables contain at least the following columns:
+
+ Column Description
+═══════════════════════════════════════════════════════════════════
+ log_line The line number in the file, starting at zero.
+ log_part The name of the partition. You can change this
+ column using an UPDATE SQL statement or with the
+ 'partition-name' command. After a value is set,
+ the following log messages will have the same
+ partition name up until another name is set.
+ log_time The time of the log entry.
+ log_idle_msecs The amount of time, in milliseconds, between the
+ current log message and the previous one.
+ log_level The log level (e.g. info, error, etc...).
+ log_mark The bookmark status for the line. This column can
+ be written to using an UPDATE query.
+ log_path The full path to the file.
+ log_text The raw line of text. Note that this column is
+ not included in the result of a 'select *', but it
+ does exist.
+
+The following tables include the basic columns as listed above and
+include a few more columns since the log file format is more
+structured.
+
+ β€’  syslog_log 
+
+ Column Description
+ ═════════════════════════════════════════════════════════════════
+ log_hostname The hostname the message was received from.
+ log_procname The name of the process that sent the message.
+ log_pid The process ID of the process that sent the
+ message.
+ β€’  access_log  (The column names are the same as those in
+ the Microsoft LogParser tool.)
+
+ Column Description
+ ══════════════════════════════════════════════════════════
+ c_ip The client IP address.
+ cs_username The client user name.
+ cs_method The HTTP method.
+ cs_uri_stem The stem portion of the URI.
+ cs_uri_query The query portion of the URI.
+ cs_version The HTTP version string.
+ sc_status The status number returned to the client.
+ sc_bytes The number of bytes sent to the client.
+ cs_referrer The URL of the referring page.
+ cs_user_agent The user agent string.
+ β€’  strace_log  (Currently, you need to run strace with
+ the  -tt -T options so there are timestamps for each
+ function call.)
+
+ Column Description
+ ═══════════════════════════════════════════════════════
+ funcname The name of the syscall.
+ result The result code.
+ duration The amount of time spent in the syscall.
+ arg0 - arg9 The arguments passed to the syscall.
+
+These tables are created dynamically and not stored in memory or on
+disk. If you would like to persist some information from the tables,
+you can attach another database and create tables in that database.
+For example, if you wanted to save the results from the earlier
+example of a top ten query into the "/tmp/topten.db" file, you can do:
+
+ β–Œ;ATTACH DATABASE '/tmp/topten.db' AS topten; 
+ β–Œ;CREATE TABLE topten.foo AS SELECT cs_uri_stem, count(*) AS total 
+ β–Œ FROM access_log GROUP BY cs_uri_stem ORDER BY total DESC 
+ β–Œ LIMIT 10; 
+
+Dynamic logline Table (experimental)
+
+(NOTE: This feature is still very new and not completely reliable yet,
+use with care.)
+
+For log formats that lack message structure, lnav can parse the log
+message and attempt to extract any data fields that it finds. This
+feature is available through the  logline  log table. This table is
+dynamically created and defined based on the message at the top of the
+log view. For example, given the following log message from "sudo",
+lnav will create the "logline" table with columns for "TTY", "PWD",
+"USER", and "COMMAND":
+
+ β–ŒMay 24 06:48:38 Tim-Stacks-iMac.local sudo[76387]: stack : TTY=ttys003 ; PWD=/Users/stack/github/lbuild ; USER=root ; COMMAND=/bin/echo Hello, World! 
+
+Queries executed against this table will then only return results for
+other log messages that have the same format. So, if you were to
+execute the following query while viewing the above line, you might
+get the following results:
+
+ β–Œ;SELECT USER,COMMAND FROM logline; 
+
+ USER COMMAND
+═════════════════════════════════
+ root /bin/echo Hello, World!
+ mal /bin/echo Goodbye, World!
+
+The log parser works by examining each message for key/value pairs
+separated by an equal sign (=) or a colon (:). For example, in the
+previous example of a "sudo" message, the parser sees the "USER=root"
+string as a pair where the key is "USER" and the value is "root". If
+no pairs can be found, then anything that looks like a value is
+extracted and assigned a numbered column. For example, the following
+line is from "dhcpd":
+
+ β–ŒSep 16 22:35:57 drill dhcpd: DHCPDISCOVER from 00:16:ce:54:4e:f3 via hme3 
+
+In this case, the lnav parser recognizes that "DHCPDISCOVER", the MAC
+address and the "hme3" device name are values and not normal words.
+So, it builds a table with three columns for each of these values. The
+regular words in the message, like "from" and "via", are then used to
+find other messages with a similar format.
+
+If you would like to execute queries against log messages of different
+formats at the same time, you can use the 'create-logline-table'
+command to permanently create a table using the top line of the log
+view as a template.
+
+Other SQL Features
+
+Environment variables can be used in SQL statements by prefixing the
+variable name with a dollar-sign ($). For example, to read the value
+of the  HOME  variable, you can do:
+
+ β–Œ;SELECT $HOME; 
+
+To select the syslog messages that have a hostname field that is equal
+to the  HOSTNAME  variable:
+
+ β–Œ;SELECT * FROM syslog_log WHERE log_hostname = $HOSTNAME; 
+
+NOTE: Variable substitution is done for fields in the query and is not
+a plain text substitution. For example, the following statement WILL
+NOT WORK:
+
+ β–Œ;SELECT * FROM $TABLE_NAME; -- Syntax error 
+
+Access to lnav's environment variables is also available via the
+"environ" table. The table has two columns (name, value) and can be
+read and written to using SQL SELECT, INSERT, UPDATE, and DELETE
+statements. For example, to set the "FOO" variable to the value "BAR":
+
+ β–Œ;INSERT INTO environ SELECT 'FOO', 'BAR'; 
+
+As a more complex example, you can set the variable "LAST" to the last
+syslog line number by doing:
+
+ β–Œ;INSERT INTO environ SELECT 'LAST', (SELECT max(log_line) FROM syslog_log); 
+
+A delete will unset the environment variable:
+
+ β–Œ;DELETE FROM environ WHERE name='LAST'; 
+
+The table allows you to easily use the results of a SQL query in lnav
+commands, which is especially useful when scripting lnav.
+
+Contact
+
+For more information, visit the lnav website at:
+
+http://lnav.org
+
+For support questions, email:
+
+ β€’ lnav@googlegroups.com
+ β€’ support@lnav.org
+
+Command Reference
+
+:adjust-log-time timestamp
+══════════════════════════════════════════════════════════════════════
+ Change the timestamps of the top file to be relative to the given
+ date
+Parameter
+ timestamp The new timestamp for the top line in the
+ view
+
+Examples
+#1 To set the top timestamp to a given date:
+ :adjust-log-time 2017-01-02T05:33:00 
+
+
+#2 To set the top timestamp back an hour:
+ :adjust-log-time -1h 
+
+
+
+:alt-msg msg
+══════════════════════════════════════════════════════════════════════
+ Display a message in the alternate command position
+Parameter
+ msg The message to display
+See Also
+ :echo, :eval, :export-session-to, :rebuild, :redirect-to,
+ :write-csv-to, :write-json-to, :write-jsonlines-to, :write-raw-to,
+ :write-screen-to, :write-table-to, :write-to, :write-view-to
+Example
+#1 To display 'Press t to switch to the text view' on the bottom right:
+ :alt-msg Press t to switch to the text view 
+
+
+
+:append-to path
+══════════════════════════════════════════════════════════════════════
+ Append marked lines in the current view to the given file
+Parameter
+ path The path to the file to append to
+See Also
+ :echo, :export-session-to, :pipe-line-to, :pipe-to, :redirect-to,
+ :write-csv-to, :write-json-to, :write-jsonlines-to, :write-raw-to,
+ :write-screen-to, :write-table-to, :write-to, :write-view-to, echoln()
+Example
+#1 To append marked lines to the file /tmp/interesting-lines.txt:
+ :append-to /tmp/interesting-lines.txt 
+
+
+
+:clear-comment
+══════════════════════════════════════════════════════════════════════
+ Clear the comment attached to the top log line
+See Also
+ :comment, :tag
+
+:clear-filter-expr
+══════════════════════════════════════════════════════════════════════
+ Clear the filter expression
+See Also
+ :filter-expr, :filter-in, :filter-out, :hide-lines-after,
+ :hide-lines-before, :hide-unmarked-lines, :toggle-filtering
+
+:clear-highlight pattern
+══════════════════════════════════════════════════════════════════════
+ Remove a previously set highlight regular expression
+Parameter
+ pattern The regular expression previously used with
+ :highlight
+See Also
+ :enable-word-wrap, :hide-fields, :highlight
+Example
+#1 To clear the highlight with the pattern 'foobar':
+ :clear-highlight foobar 
+
+
+
+:clear-mark-expr
+══════════════════════════════════════════════════════════════════════
+ Clear the mark expression
+See Also
+ :hide-unmarked-lines, :mark, :mark-expr, :next-mark, :prev-mark
+
+:clear-partition
+══════════════════════════════════════════════════════════════════════
+ Clear the partition the top line is a part of
+
+
+:close
+══════════════════════════════════════════════════════════════════════
+ Close the top file in the view
+
+
+:comment text
+══════════════════════════════════════════════════════════════════════
+ Attach a comment to the top log line. The comment will be displayed
+ right below the log message it is associated with. The comment can
+ be formatted using markdown and you can add new-lines with '\n'.
+Parameter
+ text The comment text
+See Also
+ :clear-comment, :tag
+Example
+#1 To add the comment 'This is where it all went wrong' to the top line:
+ :comment This is where it all went wrong 
+
+
+
+:config option [value]
+══════════════════════════════════════════════════════════════════════
+ Read or write a configuration option
+Parameters
+ option The path to the option to read or write
+ value The value to write. If not given, the current
+ value is returned
+See Also
+ :reset-config
+Examples
+#1 To read the configuration of the '/ui/clock-format' option:
+ :config /ui/clock-format 
+
+
+#2 To set the '/ui/dim-text' option to 'false':
+ :config /ui/dim-text false 
+
+
+
+:create-logline-table table-name
+══════════════════════════════════════════════════════════════════════
+ Create an SQL table using the top line of the log view as a template
+Parameter
+ table-name The name for the new table
+See Also
+ :create-search-table, :create-search-table, :write-csv-to,
+ :write-json-to, :write-jsonlines-to, :write-raw-to, :write-screen-to,
+ :write-table-to, :write-view-to
+Example
+#1 To create a logline-style table named 'task_durations':
+ :create-logline-table task_durations 
+
+
+
+:create-search-table table-name [pattern]
+══════════════════════════════════════════════════════════════════════
+ Create an SQL table based on a regex search
+Parameters
+ table-name The name of the table to create
+ pattern The regular expression used to capture the
+ table columns. If not given, the current search
+ pattern is used.
+See Also
+ :create-logline-table, :create-logline-table, :delete-search-table,
+ :delete-search-table, :write-csv-to, :write-json-to,
+ :write-jsonlines-to, :write-raw-to, :write-screen-to, :write-table-to,
+ :write-view-to
+Example
+#1 To create a table named 'task_durations' that matches log messages with the pattern
+ 'duration=(?<duration>\d+)':
+ :create-search-table task_durations duration=(?<duration>\d+)
+
+
+
+:current-time
+══════════════════════════════════════════════════════════════════════
+ Print the current time in human-readable form and seconds since the
+ epoch
+
+
+:delete-filter pattern
+══════════════════════════════════════════════════════════════════════
+ Delete the filter created with :filter-in or :filter-out
+Parameter
+ pattern The regular expression to match
+See Also
+ :filter-in, :filter-out, :hide-lines-after, :hide-lines-before,
+ :hide-unmarked-lines, :toggle-filtering
+Example
+#1 To delete the filter with the pattern 'last message repeated':
+ :delete-filter last message repeated 
+
+
+
+:delete-logline-table table-name
+══════════════════════════════════════════════════════════════════════
+ Delete a table created with create-logline-table
+Parameter
+ table-name The name of the table to delete
+See Also
+ :create-logline-table, :create-logline-table, :create-search-table,
+ :create-search-table, :write-csv-to, :write-json-to,
+ :write-jsonlines-to, :write-raw-to, :write-screen-to, :write-table-to,
+ :write-view-to
+Example
+#1 To delete the logline-style table named 'task_durations':
+ :delete-logline-table task_durations 
+
+
+
+:delete-search-table table-name
+══════════════════════════════════════════════════════════════════════
+ Create an SQL table based on a regex search
+Parameter
+ table-name The name of the table to create
+See Also
+ :create-logline-table, :create-logline-table, :create-search-table,
+ :create-search-table, :write-csv-to, :write-json-to,
+ :write-jsonlines-to, :write-raw-to, :write-screen-to, :write-table-to,
+ :write-view-to
+Example
+#1 To delete the search table named 'task_durations':
+ :delete-search-table task_durations 
+
+
+
+:delete-tags tag1 [... tagN]
+══════════════════════════════════════════════════════════════════════
+ Remove the given tags from all log lines
+Parameter
+ tag The tags to delete
+See Also
+ :comment, :tag
+Example
+#1 To remove the tags '#BUG123' and '#needs-review' from all log lines:
+ :delete-tags #BUG123 #needs-review 
+
+
+
+:disable-filter pattern
+══════════════════════════════════════════════════════════════════════
+ Disable a filter created with filter-in/filter-out
+Parameter
+ pattern The regular expression used in the filter
+ command
+See Also
+ :enable-filter, :filter-in, :filter-out, :hide-lines-after,
+ :hide-lines-before, :hide-unmarked-lines, :toggle-filtering
+Example
+#1 To disable the filter with the pattern 'last message repeated':
+ :disable-filter last message repeated 
+
+
+
+:disable-word-wrap
+══════════════════════════════════════════════════════════════════════
+ Disable word-wrapping for the current view
+See Also
+ :enable-word-wrap, :hide-fields, :highlight
+
+:echo [-n] msg
+══════════════════════════════════════════════════════════════════════
+ Echo the given message to the screen or, if :redirect-to has been
+ called, to output file specified in the redirect. Variable
+ substitution is performed on the message. Use a backslash to escape
+ any special characters, like '$'
+Parameters
+ -n Do not print a line-feed at the end of the output
+ msg The message to display
+See Also
+ :alt-msg, :append-to, :eval, :export-session-to, :export-session-to,
+ :pipe-line-to, :pipe-to, :rebuild, :redirect-to, :redirect-to,
+ :write-csv-to, :write-csv-to, :write-json-to, :write-json-to,
+ :write-jsonlines-to, :write-jsonlines-to, :write-raw-to, :write-raw-to,
+ :write-screen-to, :write-screen-to, :write-table-to, :write-table-to,
+ :write-to, :write-to, :write-view-to, :write-view-to, echoln()
+Example
+#1 To output 'Hello, World!':
+ :echo Hello, World! 
+
+
+
+:enable-filter pattern
+══════════════════════════════════════════════════════════════════════
+ Enable a previously created and disabled filter
+Parameter
+ pattern The regular expression used in the filter
+ command
+See Also
+ :filter-in, :filter-out, :hide-lines-after, :hide-lines-before,
+ :hide-unmarked-lines, :toggle-filtering
+Example
+#1 To enable the disabled filter with the pattern 'last message repeated':
+ :enable-filter last message repeated 
+
+
+
+:enable-word-wrap
+══════════════════════════════════════════════════════════════════════
+ Enable word-wrapping for the current view
+See Also
+ :disable-word-wrap, :hide-fields, :highlight
+
+:eval command
+══════════════════════════════════════════════════════════════════════
+ Evaluate the given command/query after doing environment variable
+ substitution
+Parameter
+ command The command or query to perform substitution on.
+See Also
+ :alt-msg, :echo, :export-session-to, :rebuild, :redirect-to,
+ :write-csv-to, :write-json-to, :write-jsonlines-to, :write-raw-to,
+ :write-screen-to, :write-table-to, :write-to, :write-view-to
+Example
+#1 To substitute the table name from a variable:
+ :eval ;SELECT * FROM ${table} 
+
+
+
+:export-session-to path
+══════════════════════════════════════════════════════════════════════
+ Export the current lnav state to an executable lnav script file that
+ contains the commands needed to restore the current session
+Parameter
+ path The path to the file to write
+See Also
+ :alt-msg, :append-to, :echo, :echo, :eval, :pipe-line-to, :pipe-to,
+ :rebuild, :redirect-to, :redirect-to, :write-csv-to, :write-csv-to,
+ :write-json-to, :write-json-to, :write-jsonlines-to,
+ :write-jsonlines-to, :write-raw-to, :write-raw-to, :write-screen-to,
+ :write-screen-to, :write-table-to, :write-table-to, :write-to,
+ :write-to, :write-view-to, :write-view-to, echoln()
+
+:filter-expr expr
+══════════════════════════════════════════════════════════════════════
+ Set the filter expression
+Parameter
+ expr The SQL expression to evaluate for each log message.
+ The message values can be accessed using column names
+ prefixed with a colon
+See Also
+ :clear-filter-expr, :filter-in, :filter-out, :hide-lines-after,
+ :hide-lines-before, :hide-unmarked-lines, :toggle-filtering
+Examples
+#1 To set a filter expression that matched syslog messages from 'syslogd':
+ :filter-expr :log_procname = 'syslogd' 
+
+
+#2 To set a filter expression that matches log messages where 'id' is followed by a
+ number and contains the string 'foo':
+ :filter-expr :log_body REGEXP 'id\d+' AND :log_body REGEXP 'foo'
+
+
+
+:filter-in pattern
+══════════════════════════════════════════════════════════════════════
+ Only show lines that match the given regular expression in the
+ current view
+Parameter
+ pattern The regular expression to match
+See Also
+ :delete-filter, :disable-filter, :filter-out, :hide-lines-after,
+ :hide-lines-before, :hide-unmarked-lines, :toggle-filtering
+Example
+#1 To filter out log messages that do not have the string 'dhclient':
+ :filter-in dhclient 
+
+
+
+:filter-out pattern
+══════════════════════════════════════════════════════════════════════
+ Remove lines that match the given regular expression in the current
+ view
+Parameter
+ pattern The regular expression to match
+See Also
+ :delete-filter, :disable-filter, :filter-in, :hide-lines-after,
+ :hide-lines-before, :hide-unmarked-lines, :toggle-filtering
+Example
+#1 To filter out log messages that contain the string 'last message repeated':
+ :filter-out last message repeated 
+
+
+
+:goto line#|N%|timestamp|#anchor
+══════════════════════════════════════════════════════════════════════
+ Go to the given location in the top view
+Parameter
+ line#|N%|timestamp|#anchor A line
+ number, percent into the file,
+ timestamp, or an anchor in a text file
+See Also
+ :next-location, :next-mark, :prev-location, :prev-mark, :relative-goto
+Examples
+#1 To go to line 22:
+ :goto 22 
+
+
+#2 To go to the line 75% of the way into the view:
+ :goto 75% 
+
+
+#3 To go to the first message on the first day of 2017:
+ :goto 2017-01-01 
+
+
+#4 To go to the Screenshots section:
+ :goto #screenshots 
+
+
+
+:help
+══════════════════════════════════════════════════════════════════════
+ Open the help text view
+
+
+:hide-fields field-name1 [... field-nameN]
+══════════════════════════════════════════════════════════════════════
+ Hide log message fields by replacing them with an ellipsis
+Parameter
+ field-name The name of the field to hide in the
+ format for the top log line. A qualified name can be
+ used where the field name is prefixed by the format
+ name and a dot to hide any field.
+See Also
+ :enable-word-wrap, :highlight, :show-fields
+Examples
+#1 To hide the log_procname fields in all formats:
+ :hide-fields log_procname 
+
+
+#2 To hide only the log_procname field in the syslog format:
+ :hide-fields syslog_log.log_procname 
+
+
+
+:hide-file path
+══════════════════════════════════════════════════════════════════════
+ Hide the given file(s) and skip indexing until it is shown again.
+ If no path is given, the current file in the view is hidden
+Parameter
+ path A path or glob pattern that specifies the files to
+ hide
+
+
+:hide-lines-after date
+══════════════════════════════════════════════════════════════════════
+ Hide lines that come after the given date
+Parameter
+ date An absolute or relative date
+See Also
+ :filter-in, :filter-out, :hide-lines-before, :hide-unmarked-lines,
+ :show-lines-before-and-after, :toggle-filtering
+Examples
+#1 To hide the lines after the top line in the view:
+ :hide-lines-after here 
+
+
+#2 To hide the lines after 6 AM today:
+ :hide-lines-after 6am 
+
+
+
+:hide-lines-before date
+══════════════════════════════════════════════════════════════════════
+ Hide lines that come before the given date
+Parameter
+ date An absolute or relative date
+See Also
+ :filter-in, :filter-out, :hide-lines-after, :hide-unmarked-lines,
+ :show-lines-before-and-after, :toggle-filtering
+Examples
+#1 To hide the lines before the top line in the view:
+ :hide-lines-before here 
+
+
+#2 To hide the log messages before 6 AM today:
+ :hide-lines-before 6am 
+
+
+
+:hide-unmarked-lines
+══════════════════════════════════════════════════════════════════════
+ Hide lines that have not been bookmarked
+See Also
+ :filter-in, :filter-out, :hide-lines-after, :hide-lines-before, :mark,
+ :next-mark, :prev-mark, :toggle-filtering
+
+:highlight pattern
+══════════════════════════════════════════════════════════════════════
+ Add coloring to log messages fragments that match the given regular
+ expression
+Parameter
+ pattern The regular expression to match
+See Also
+ :clear-highlight, :enable-word-wrap, :hide-fields
+Example
+#1 To highlight numbers with three or more digits:
+ :highlight \d{3,} 
+
+
+
+:load-session
+══════════════════════════════════════════════════════════════════════
+ Load the latest session state
+
+
+:mark
+══════════════════════════════════════════════════════════════════════
+ Toggle the bookmark state for the top line in the current view
+See Also
+ :hide-unmarked-lines, :next-mark, :prev-mark
+
+:mark-expr expr
+══════════════════════════════════════════════════════════════════════
+ Set the bookmark expression
+Parameter
+ expr The SQL expression to evaluate for each log message.
+ The message values can be accessed using column names
+ prefixed with a colon
+See Also
+ :clear-mark-expr, :hide-unmarked-lines, :mark, :next-mark, :prev-mark
+Example
+#1 To mark lines from 'dhclient' that mention 'eth0':
+ :mark-expr :log_procname = 'dhclient' AND :log_body LIKE '%eth0%'
+
+
+
+:next-location
+══════════════════════════════════════════════════════════════════════
+ Move to the next position in the location history
+See Also
+ :goto, :next-mark, :prev-location, :prev-mark, :relative-goto
+
+:next-mark type1 [... typeN]
+══════════════════════════════════════════════════════════════════════
+ Move to the next bookmark of the given type in the current view
+Parameter
+ type The type of bookmark -- error, warning, search, user,
+ file, meta
+See Also
+ :goto, :hide-unmarked-lines, :mark, :next-location, :prev-location,
+ :prev-mark, :prev-mark, :relative-goto
+Example
+#1 To go to the next error:
+ :next-mark error 
+
+
+
+:open path1 [... pathN]
+══════════════════════════════════════════════════════════════════════
+ Open the given file(s) in lnav. Opening files on machines
+ accessible via SSH can be done using the syntax:
+ [user@]host:/path/to/logs
+Parameter
+ path The path to the file to open
+
+Examples
+#1 To open the file '/path/to/file':
+ :open /path/to/file 
+
+
+#2 To open the remote file '/var/log/syslog.log':
+ :open dean@host1.example.com:/var/log/syslog.log 
+
+
+
+:partition-name name
+══════════════════════════════════════════════════════════════════════
+ Mark the top line in the log view as the start of a new partition
+ with the given name
+Parameter
+ name The name for the new partition
+
+Example
+#1 To mark the top line as the start of the partition named 'boot #1':
+ :partition-name boot #1 
+
+
+
+:pipe-line-to shell-cmd
+══════════════════════════════════════════════════════════════════════
+ Pipe the top line to the given shell command
+Parameter
+ shell-cmd The shell command-line to execute
+See Also
+ :append-to, :echo, :export-session-to, :pipe-to, :redirect-to,
+ :write-csv-to, :write-json-to, :write-jsonlines-to, :write-raw-to,
+ :write-screen-to, :write-table-to, :write-to, :write-view-to, echoln()
+Example
+#1 To write the top line to 'sed' for processing:
+ :pipe-line-to sed -e 's/foo/bar/g' 
+
+
+
+:pipe-to shell-cmd
+══════════════════════════════════════════════════════════════════════
+ Pipe the marked lines to the given shell command
+Parameter
+ shell-cmd The shell command-line to execute
+See Also
+ :append-to, :echo, :export-session-to, :pipe-line-to, :redirect-to,
+ :write-csv-to, :write-json-to, :write-jsonlines-to, :write-raw-to,
+ :write-screen-to, :write-table-to, :write-to, :write-view-to, echoln()
+Example
+#1 To write marked lines to 'sed' for processing:
+ :pipe-to sed -e s/foo/bar/g 
+
+
+
+:prev-location
+══════════════════════════════════════════════════════════════════════
+ Move to the previous position in the location history
+See Also
+ :goto, :next-location, :next-mark, :prev-mark, :relative-goto
+
+:prev-mark type1 [... typeN]
+══════════════════════════════════════════════════════════════════════
+ Move to the previous bookmark of the given type in the current view
+Parameter
+ type The type of bookmark -- error, warning, search, user,
+ file, meta
+See Also
+ :goto, :hide-unmarked-lines, :mark, :next-location, :next-mark,
+ :next-mark, :prev-location, :relative-goto
+Example
+#1 To go to the previous error:
+ :prev-mark error 
+
+
+
+:prompt type [--alt] [prompt] [initial-value]
+══════════════════════════════════════════════════════════════════════
+ Open the given prompt
+Parameters
+ type The type of prompt -- command,
+ script, search, sql, user
+ --alt Perform the alternate action for
+ this prompt by default
+ prompt The prompt to display
+ initial-value The initial value to fill in for the
+ prompt
+
+Examples
+#1 To open the command prompt with 'filter-in' already filled in:
+ :prompt command : 'filter-in ' 
+
+
+#2 To ask the user a question:
+ :prompt user 'Are you sure? ' 
+
+
+
+:quit
+══════════════════════════════════════════════════════════════════════
+ Quit lnav
+
+
+:quit
+══════════════════════════════════════════════════════════════════════
+ Quit lnav
+
+
+:quit
+══════════════════════════════════════════════════════════════════════
+ Quit lnav
+
+
+:rebuild
+══════════════════════════════════════════════════════════════════════
+ Forcefully rebuild file indexes
+See Also
+ :alt-msg, :echo, :eval, :export-session-to, :redirect-to,
+ :write-csv-to, :write-json-to, :write-jsonlines-to, :write-raw-to,
+ :write-screen-to, :write-table-to, :write-to, :write-view-to
+
+:redirect-to [path]
+══════════════════════════════════════════════════════════════════════
+ Redirect the output of commands that write to stdout to the given
+ file
+Parameter
+ path The path to the file to write. If not specified, the
+ current redirect will be cleared
+See Also
+ :alt-msg, :append-to, :echo, :echo, :eval, :export-session-to,
+ :export-session-to, :pipe-line-to, :pipe-to, :rebuild, :write-csv-to,
+ :write-csv-to, :write-json-to, :write-json-to, :write-jsonlines-to,
+ :write-jsonlines-to, :write-raw-to, :write-raw-to, :write-screen-to,
+ :write-screen-to, :write-table-to, :write-table-to, :write-to,
+ :write-to, :write-view-to, :write-view-to, echoln()
+Example
+#1 To write the output of lnav commands to the file /tmp/script-output.txt:
+ :redirect-to /tmp/script-output.txt 
+
+
+
+:redraw
+══════════════════════════════════════════════════════════════════════
+ Do a full redraw of the screen
+
+
+:relative-goto line-count|N%
+══════════════════════════════════════════════════════════════════════
+ Move the current view up or down by the given amount
+Parameter
+ line-count|N% The amount to move the view by.
+See Also
+ :goto, :next-location, :next-mark, :prev-location, :prev-mark
+Examples
+#1 To move 22 lines down in the view:
+ :relative-goto +22 
+
+
+#2 To move 10 percent back in the view:
+ :relative-goto -10% 
+
+
+
+:reset-config option
+══════════════════════════════════════════════════════════════════════
+ Reset the configuration option to its default value
+Parameter
+ option The path to the option to reset
+See Also
+ :config
+Example
+#1 To reset the '/ui/clock-format' option back to the builtin default:
+ :reset-config /ui/clock-format 
+
+
+
+:reset-session
+══════════════════════════════════════════════════════════════════════
+ Reset the session state, clearing all filters, highlights, and
+ bookmarks
+
+
+:save-session
+══════════════════════════════════════════════════════════════════════
+ Save the current state as a session
+
+
+:session lnav-command
+══════════════════════════════════════════════════════════════════════
+ Add the given command to the session file (~/.lnav/session)
+Parameter
+ lnav-command The lnav command to save.
+
+Example
+#1 To add the command ':highlight foobar' to the session file:
+ :session :highlight foobar 
+
+
+
+:set-min-log-level log-level
+══════════════════════════════════════════════════════════════════════
+ Set the minimum log level to display in the log view
+Parameter
+ log-level The new minimum log level
+
+Example
+#1 To set the minimum log level displayed to error:
+ :set-min-log-level error 
+
+
+
+:show-fields field-name1 [... field-nameN]
+══════════════════════════════════════════════════════════════════════
+ Show log message fields that were previously hidden
+Parameter
+ field-name The name of the field to show
+See Also
+ :enable-word-wrap, :hide-fields, :highlight
+Example
+#1 To show all the log_procname fields in all formats:
+ :show-fields log_procname 
+
+
+
+:show-file path
+══════════════════════════════════════════════════════════════════════
+ Show the given file(s) and resume indexing.
+Parameter
+ path The path or glob pattern that specifies the files to
+ show
+
+
+:show-lines-before-and-after
+══════════════════════════════════════════════════════════════════════
+ Show lines that were hidden by the 'hide-lines' commands
+See Also
+ :filter-in, :filter-out, :hide-lines-after, :hide-lines-before,
+ :hide-unmarked-lines, :toggle-filtering
+
+:show-only-this-file
+══════════════════════════════════════════════════════════════════════
+ Show only the file for the top line in the view
+
+
+:show-unmarked-lines
+══════════════════════════════════════════════════════════════════════
+ Show lines that have not been bookmarked
+See Also
+ :filter-in, :filter-out, :hide-lines-after, :hide-lines-before,
+ :hide-unmarked-lines, :hide-unmarked-lines, :mark, :next-mark,
+ :prev-mark, :toggle-filtering
+
+:spectrogram field-name
+══════════════════════════════════════════════════════════════════════
+ Visualize the given message field or database column using a
+ spectrogram
+Parameter
+ field-name The name of the numeric field to
+ visualize.
+
+Example
+#1 To visualize the sc_bytes field in the access_log format:
+ :spectrogram sc_bytes 
+
+
+
+:summarize column-name
+══════════════════════════════════════════════════════════════════════
+ Execute a SQL query that computes the characteristics of the values
+ in the given column
+Parameter
+ column-name The name of the column to analyze.
+
+Example
+#1 To get a summary of the sc_bytes column in the access_log table:
+ :summarize sc_bytes 
+
+
+
+:switch-to-view view-name
+══════════════════════════════════════════════════════════════════════
+ Switch to the given view
+Parameter
+ view-name The name of the view to switch to.
+
+Example
+#1 To switch to the 'schema' view:
+ :switch-to-view schema 
+
+
+
+:tag tag1 [... tagN]
+══════════════════════════════════════════════════════════════════════
+ Attach tags to the top log line
+Parameter
+ tag The tags to attach
+See Also
+ :comment, :delete-tags, :untag
+Example
+#1 To add the tags '#BUG123' and '#needs-review' to the top line:
+ :tag #BUG123 #needs-review 
+
+
+
+:toggle-filtering
+══════════════════════════════════════════════════════════════════════
+ Toggle the filtering flag for the current view
+See Also
+ :filter-in, :filter-out, :hide-lines-after, :hide-lines-before,
+ :hide-unmarked-lines
+
+:toggle-view view-name
+══════════════════════════════════════════════════════════════════════
+ Switch to the given view or, if it is already displayed, switch to
+ the previous view
+Parameter
+ view-name The name of the view to toggle the display
+ of.
+
+Example
+#1 To switch to the 'schema' view if it is not displayed or switch back to the previous
+ view:
+ :toggle-view schema 
+
+
+
+:unix-time seconds
+══════════════════════════════════════════════════════════════════════
+ Convert epoch time to a human-readable form
+Parameter
+ seconds The epoch timestamp to convert
+
+Example
+#1 To convert the epoch time 1490191111:
+ :unix-time 1490191111 
+
+
+
+:untag tag1 [... tagN]
+══════════════════════════════════════════════════════════════════════
+ Detach tags from the top log line
+Parameter
+ tag The tags to detach
+See Also
+ :comment, :tag
+Example
+#1 To remove the tags '#BUG123' and '#needs-review' from the top line:
+ :untag #BUG123 #needs-review 
+
+
+
+:write-table-to [--anonymize] path
+══════════════════════════════════════════════════════════════════════
+ Write SQL results to the given file in a tabular format
+Parameters
+ --anonymize Anonymize the table contents
+ path The path to the file to write
+See Also
+ :alt-msg, :append-to, :create-logline-table, :create-search-table,
+ :echo, :echo, :eval, :export-session-to, :export-session-to,
+ :pipe-line-to, :pipe-to, :rebuild, :redirect-to, :redirect-to,
+ :write-csv-to, :write-csv-to, :write-csv-to, :write-json-to,
+ :write-json-to, :write-json-to, :write-jsonlines-to,
+ :write-jsonlines-to, :write-jsonlines-to, :write-raw-to, :write-raw-to,
+ :write-raw-to, :write-screen-to, :write-screen-to, :write-screen-to,
+ :write-to, :write-to, :write-view-to, :write-view-to, :write-view-to,
+ echoln()
+Example
+#1 To write SQL results as text to /tmp/table.txt:
+ :write-table-to /tmp/table.txt 
+
+
+
+:write-csv-to [--anonymize] path
+══════════════════════════════════════════════════════════════════════
+ Write SQL results to the given file in CSV format
+Parameters
+ --anonymize Anonymize the row contents
+ path The path to the file to write
+See Also
+ :alt-msg, :append-to, :create-logline-table, :create-search-table,
+ :echo, :echo, :eval, :export-session-to, :export-session-to,
+ :pipe-line-to, :pipe-to, :rebuild, :redirect-to, :redirect-to,
+ :write-json-to, :write-json-to, :write-json-to, :write-jsonlines-to,
+ :write-jsonlines-to, :write-jsonlines-to, :write-raw-to, :write-raw-to,
+ :write-raw-to, :write-screen-to, :write-screen-to, :write-screen-to,
+ :write-table-to, :write-table-to, :write-table-to, :write-to,
+ :write-to, :write-view-to, :write-view-to, :write-view-to, echoln()
+Example
+#1 To write SQL results as CSV to /tmp/table.csv:
+ :write-csv-to /tmp/table.csv 
+
+
+
+:write-json-to [--anonymize] path
+══════════════════════════════════════════════════════════════════════
+ Write SQL results to the given file in JSON format
+Parameters
+ --anonymize Anonymize the JSON values
+ path The path to the file to write
+See Also
+ :alt-msg, :append-to, :create-logline-table, :create-search-table,
+ :echo, :echo, :eval, :export-session-to, :export-session-to,
+ :pipe-line-to, :pipe-to, :rebuild, :redirect-to, :redirect-to,
+ :write-csv-to, :write-csv-to, :write-csv-to, :write-jsonlines-to,
+ :write-jsonlines-to, :write-jsonlines-to, :write-raw-to, :write-raw-to,
+ :write-raw-to, :write-screen-to, :write-screen-to, :write-screen-to,
+ :write-table-to, :write-table-to, :write-table-to, :write-to,
+ :write-to, :write-view-to, :write-view-to, :write-view-to, echoln()
+Example
+#1 To write SQL results as JSON to /tmp/table.json:
+ :write-json-to /tmp/table.json 
+
+
+
+:write-jsonlines-to [--anonymize] path
+══════════════════════════════════════════════════════════════════════
+ Write SQL results to the given file in JSON Lines format
+Parameters
+ --anonymize Anonymize the JSON values
+ path The path to the file to write
+See Also
+ :alt-msg, :append-to, :create-logline-table, :create-search-table,
+ :echo, :echo, :eval, :export-session-to, :export-session-to,
+ :pipe-line-to, :pipe-to, :rebuild, :redirect-to, :redirect-to,
+ :write-csv-to, :write-csv-to, :write-csv-to, :write-json-to,
+ :write-json-to, :write-json-to, :write-raw-to, :write-raw-to,
+ :write-raw-to, :write-screen-to, :write-screen-to, :write-screen-to,
+ :write-table-to, :write-table-to, :write-table-to, :write-to,
+ :write-to, :write-view-to, :write-view-to, :write-view-to, echoln()
+Example
+#1 To write SQL results as JSON Lines to /tmp/table.json:
+ :write-jsonlines-to /tmp/table.json 
+
+
+
+:write-raw-to [--view={log,db}] [--anonymize] path
+══════════════════════════════════════════════════════════════════════
+ In the log view, write the original log file content of the marked
+ messages to the file. In the DB view, the contents of the cells are
+ written to the output file.
+Parameters
+ --view={log,db} The view to use as the source of
+ data
+ --anonymize Anonymize the lines
+ path The path to the file to write
+See Also
+ :alt-msg, :append-to, :create-logline-table, :create-search-table,
+ :echo, :echo, :eval, :export-session-to, :export-session-to,
+ :pipe-line-to, :pipe-to, :rebuild, :redirect-to, :redirect-to,
+ :write-csv-to, :write-csv-to, :write-csv-to, :write-json-to,
+ :write-json-to, :write-json-to, :write-jsonlines-to,
+ :write-jsonlines-to, :write-jsonlines-to, :write-screen-to,
+ :write-screen-to, :write-screen-to, :write-table-to, :write-table-to,
+ :write-table-to, :write-to, :write-to, :write-view-to, :write-view-to,
+ :write-view-to, echoln()
+Example
+#1 To write the marked lines in the log view to /tmp/table.txt:
+ :write-raw-to /tmp/table.txt 
+
+
+
+:write-screen-to [--anonymize] path
+══════════════════════════════════════════════════════════════════════
+ Write the displayed text or SQL results to the given file without
+ any formatting
+Parameters
+ --anonymize Anonymize the lines
+ path The path to the file to write
+See Also
+ :alt-msg, :append-to, :create-logline-table, :create-search-table,
+ :echo, :echo, :eval, :export-session-to, :export-session-to,
+ :pipe-line-to, :pipe-to, :rebuild, :redirect-to, :redirect-to,
+ :write-csv-to, :write-csv-to, :write-csv-to, :write-json-to,
+ :write-json-to, :write-json-to, :write-jsonlines-to,
+ :write-jsonlines-to, :write-jsonlines-to, :write-raw-to, :write-raw-to,
+ :write-raw-to, :write-table-to, :write-table-to, :write-table-to,
+ :write-to, :write-to, :write-view-to, :write-view-to, :write-view-to,
+ echoln()
+Example
+#1 To write only the displayed text to /tmp/table.txt:
+ :write-screen-to /tmp/table.txt 
+
+
+
+:write-table-to [--anonymize] path
+══════════════════════════════════════════════════════════════════════
+ Write SQL results to the given file in a tabular format
+Parameters
+ --anonymize Anonymize the table contents
+ path The path to the file to write
+See Also
+ :alt-msg, :append-to, :create-logline-table, :create-search-table,
+ :echo, :echo, :eval, :export-session-to, :export-session-to,
+ :pipe-line-to, :pipe-to, :rebuild, :redirect-to, :redirect-to,
+ :write-csv-to, :write-csv-to, :write-csv-to, :write-json-to,
+ :write-json-to, :write-json-to, :write-jsonlines-to,
+ :write-jsonlines-to, :write-jsonlines-to, :write-raw-to, :write-raw-to,
+ :write-raw-to, :write-screen-to, :write-screen-to, :write-screen-to,
+ :write-to, :write-to, :write-view-to, :write-view-to, :write-view-to,
+ echoln()
+Example
+#1 To write SQL results as text to /tmp/table.txt:
+ :write-table-to /tmp/table.txt 
+
+
+
+:write-to [--anonymize] path
+══════════════════════════════════════════════════════════════════════
+ Overwrite the given file with any marked lines in the current view
+Parameters
+ --anonymize Anonymize the lines
+ path The path to the file to write
+See Also
+ :alt-msg, :append-to, :echo, :echo, :eval, :export-session-to,
+ :export-session-to, :pipe-line-to, :pipe-to, :rebuild, :redirect-to,
+ :redirect-to, :write-csv-to, :write-csv-to, :write-json-to,
+ :write-json-to, :write-jsonlines-to, :write-jsonlines-to,
+ :write-raw-to, :write-raw-to, :write-screen-to, :write-screen-to,
+ :write-table-to, :write-table-to, :write-view-to, :write-view-to,
+ echoln()
+Example
+#1 To write marked lines to the file /tmp/interesting-lines.txt:
+ :write-to /tmp/interesting-lines.txt 
+
+
+
+:write-view-to [--anonymize] path
+══════════════════════════════════════════════════════════════════════
+ Write the text in the top view to the given file without any
+ formatting
+Parameters
+ --anonymize Anonymize the lines
+ path The path to the file to write
+See Also
+ :alt-msg, :append-to, :create-logline-table, :create-search-table,
+ :echo, :echo, :eval, :export-session-to, :export-session-to,
+ :pipe-line-to, :pipe-to, :rebuild, :redirect-to, :redirect-to,
+ :write-csv-to, :write-csv-to, :write-csv-to, :write-json-to,
+ :write-json-to, :write-json-to, :write-jsonlines-to,
+ :write-jsonlines-to, :write-jsonlines-to, :write-raw-to, :write-raw-to,
+ :write-raw-to, :write-screen-to, :write-screen-to, :write-screen-to,
+ :write-table-to, :write-table-to, :write-table-to, :write-to,
+ :write-to, echoln()
+Example
+#1 To write the top view to /tmp/table.txt:
+ :write-view-to /tmp/table.txt 
+
+
+
+:zoom-to zoom-level
+══════════════════════════════════════════════════════════════════════
+ Zoom the histogram view to the given level
+Parameter
+ zoom-level The zoom level
+
+Example
+#1 To set the zoom level to '1-week':
+ :zoom-to 1-week 
+
+
+SQL Reference
+
+CAST(expr AS type-name)
+══════════════════════════════════════════════════════════════════════
+ Convert the value of the given expression to a different storage
+ class specified by type-name.
+Parameters
+ expr The value to convert.
+ type-name The name of the type to convert to.
+
+Example
+#1 To cast the value 1.23 as an integer:
+ ;SELECT CAST(1.23 AS INTEGER) 
+
+
+
+OVER([base-window-name] PARTITION BY expr, ... ORDER BY expr, ...,
+ [frame-spec])
+══════════════════════════════════════════════════════════════════════
+ Executes the preceding function over a window
+Parameters
+ base-window-name The name of the window
+ definition
+ expr The values to use for
+ partitioning
+ expr The values used to order the
+ rows in the window
+ frame-spec Determines which output rows
+ are read by an aggregate window function
+
+
+abs(x)
+══════════════════════════════════════════════════════════════════════
+ Return the absolute value of the argument
+Parameter
+ x The number to convert
+See Also
+ acos(), acosh(), asin(), asinh(), atan(), atan2(), atanh(), atn2(),
+ avg(), ceil(), degrees(), exp(), floor(), log(), log10(), max(), min(),
+ pi(), power(), radians(), round(), sign(), square(), sum(), total()
+Example
+#1 To get the absolute value of -1:
+ ;SELECT abs(-1) 
+
+
+
+acos(num)
+══════════════════════════════════════════════════════════════════════
+ Returns the arccosine of a number, in radians
+Parameter
+ num A cosine value that is between -1 and 1
+See Also
+ abs(), acosh(), asin(), asinh(), atan(), atan2(), atanh(), atn2(),
+ avg(), ceil(), degrees(), exp(), floor(), log(), log10(), max(), min(),
+ pi(), power(), radians(), round(), sign(), square(), sum(), total()
+Example
+#1 To get the arccosine of 0.2:
+ ;SELECT acos(0.2) 
+
+
+
+acosh(num)
+══════════════════════════════════════════════════════════════════════
+ Returns the hyperbolic arccosine of a number
+Parameter
+ num A number that is one or more
+See Also
+ abs(), acos(), asin(), asinh(), atan(), atan2(), atanh(), atn2(),
+ avg(), ceil(), degrees(), exp(), floor(), log(), log10(), max(), min(),
+ pi(), power(), radians(), round(), sign(), square(), sum(), total()
+Example
+#1 To get the hyperbolic arccosine of 1.2:
+ ;SELECT acosh(1.2) 
+
+
+
+anonymize(value)
+══════════════════════════════════════════════════════════════════════
+ Replace identifying information with random values.
+Parameter
+ value The text to anonymize
+See Also
+ char(), charindex(), decode(), encode(), endswith(), extract(),
+ group_concat(), group_spooky_hash(), gunzip(), gzip(),
+ humanize_duration(), humanize_file_size(), instr(), leftstr(),
+ length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
+ parse_url(), printf(), proper(), regexp_capture(),
+ regexp_capture_into_json(), regexp_match(), regexp_replace(),
+ replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(),
+ spooky_hash(), startswith(), strfilter(), substr(), trim(), unicode(),
+ unparse_url(), upper(), xpath()
+Example
+#1 To anonymize an IP address:
+ ;SELECT anonymize('Hello, 192.168.1.2') 
+
+
+
+asin(num)
+══════════════════════════════════════════════════════════════════════
+ Returns the arcsine of a number, in radians
+Parameter
+ num A sine value that is between -1 and 1
+See Also
+ abs(), acos(), acosh(), asinh(), atan(), atan2(), atanh(), atn2(),
+ avg(), ceil(), degrees(), exp(), floor(), log(), log10(), max(), min(),
+ pi(), power(), radians(), round(), sign(), square(), sum(), total()
+Example
+#1 To get the arcsine of 0.2:
+ ;SELECT asin(0.2) 
+
+
+
+asinh(num)
+══════════════════════════════════════════════════════════════════════
+ Returns the hyperbolic arcsine of a number
+Parameter
+ num The number
+See Also
+ abs(), acos(), acosh(), asin(), atan(), atan2(), atanh(), atn2(),
+ avg(), ceil(), degrees(), exp(), floor(), log(), log10(), max(), min(),
+ pi(), power(), radians(), round(), sign(), square(), sum(), total()
+Example
+#1 To get the hyperbolic arcsine of 0.2:
+ ;SELECT asinh(0.2) 
+
+
+
+atan(num)
+══════════════════════════════════════════════════════════════════════
+ Returns the arctangent of a number, in radians
+Parameter
+ num The number
+See Also
+ abs(), acos(), acosh(), asin(), asinh(), atan2(), atanh(), atn2(),
+ avg(), ceil(), degrees(), exp(), floor(), log(), log10(), max(), min(),
+ pi(), power(), radians(), round(), sign(), square(), sum(), total()
+Example
+#1 To get the arctangent of 0.2:
+ ;SELECT atan(0.2) 
+
+
+
+atan2(y, x)
+══════════════════════════════════════════════════════════════════════
+ Returns the angle in the plane between the positive X axis and the
+ ray from (0, 0) to the point (x, y)
+Parameters
+ y The y coordinate of the point
+ x The x coordinate of the point
+See Also
+ abs(), acos(), acosh(), asin(), asinh(), atan(), atanh(), atn2(),
+ avg(), ceil(), degrees(), exp(), floor(), log(), log10(), max(), min(),
+ pi(), power(), radians(), round(), sign(), square(), sum(), total()
+Example
+#1 To get the angle, in degrees, for the point at (5, 5):
+ ;SELECT degrees(atan2(5, 5)) 
+
+
+
+atanh(num)
+══════════════════════════════════════════════════════════════════════
+ Returns the hyperbolic arctangent of a number
+Parameter
+ num The number
+See Also
+ abs(), acos(), acosh(), asin(), asinh(), atan(), atan2(), atn2(),
+ avg(), ceil(), degrees(), exp(), floor(), log(), log10(), max(), min(),
+ pi(), power(), radians(), round(), sign(), square(), sum(), total()
+Example
+#1 To get the hyperbolic arctangent of 0.2:
+ ;SELECT atanh(0.2) 
+
+
+
+atn2(y, x)
+══════════════════════════════════════════════════════════════════════
+ Returns the angle in the plane between the positive X axis and the
+ ray from (0, 0) to the point (x, y)
+Parameters
+ y The y coordinate of the point
+ x The x coordinate of the point
+See Also
+ abs(), acos(), acosh(), asin(), asinh(), atan(), atan2(), atanh(),
+ avg(), ceil(), degrees(), exp(), floor(), log(), log10(), max(), min(),
+ pi(), power(), radians(), round(), sign(), square(), sum(), total()
+Example
+#1 To get the angle, in degrees, for the point at (5, 5):
+ ;SELECT degrees(atn2(5, 5)) 
+
+
+
+avg(X)
+══════════════════════════════════════════════════════════════════════
+ Returns the average value of all non-NULL numbers within a group.
+Parameter
+ X The value to compute the average of.
+See Also
+ abs(), acos(), acosh(), asin(), asinh(), atan(), atan2(), atanh(),
+ atn2(), ceil(), degrees(), exp(), floor(), log(), log10(), max(),
+ min(), pi(), power(), radians(), round(), sign(), square(), sum(),
+ total()
+Examples
+#1 To get the average of the column 'ex_duration' from the table 'lnav_example_log':
+ ;SELECT avg(ex_duration) FROM lnav_example_log 
+
+
+#2 To get the average of the column 'ex_duration' from the table 'lnav_example_log'
+ when grouped by 'ex_procname':
+ ;SELECT ex_procname, avg(ex_duration) FROM lnav_example_log GROUP BY ex_procname
+
+
+
+basename(path)
+══════════════════════════════════════════════════════════════════════
+ Extract the base portion of a pathname.
+Parameter
+ path The path
+See Also
+ dirname(), joinpath(), readlink(), realpath()
+Examples
+#1 To get the base of a plain file name:
+ ;SELECT basename('foobar') 
+
+
+#2 To get the base of a path:
+ ;SELECT basename('foo/bar') 
+
+
+#3 To get the base of a directory:
+ ;SELECT basename('foo/bar/') 
+
+
+#4 To get the base of an empty string:
+ ;SELECT basename('') 
+
+
+#5 To get the base of a Windows path:
+ ;SELECT basename('foo\bar') 
+
+
+#6 To get the base of the root directory:
+ ;SELECT basename('/') 
+
+
+
+ceil(num)
+══════════════════════════════════════════════════════════════════════
+ Returns the smallest integer that is not less than the argument
+Parameter
+ num The number to raise to the ceiling
+See Also
+ abs(), acos(), acosh(), asin(), asinh(), atan(), atan2(), atanh(),
+ atn2(), avg(), degrees(), exp(), floor(), log(), log10(), max(), min(),
+ pi(), power(), radians(), round(), sign(), square(), sum(), total()
+Example
+#1 To get the ceiling of 1.23:
+ ;SELECT ceil(1.23) 
+
+
+
+changes()
+══════════════════════════════════════════════════════════════════════
+ The number of database rows that were changed, inserted, or deleted
+ by the most recent statement.
+
+
+char(X, ...)
+══════════════════════════════════════════════════════════════════════
+ Returns a string composed of characters having the given unicode
+ code point values
+Parameter
+ X The unicode code point values
+See Also
+ anonymize(), charindex(), decode(), encode(), endswith(), extract(),
+ group_concat(), group_spooky_hash(), gunzip(), gzip(),
+ humanize_duration(), humanize_file_size(), instr(), leftstr(),
+ length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
+ parse_url(), printf(), proper(), regexp_capture(),
+ regexp_capture_into_json(), regexp_match(), regexp_replace(),
+ replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(),
+ spooky_hash(), startswith(), strfilter(), substr(), trim(), unicode(),
+ unparse_url(), upper(), xpath()
+Example
+#1 To get a string with the code points 0x48 and 0x49:
+ ;SELECT char(0x48, 0x49) 
+
+
+
+charindex(needle, haystack, [start])
+══════════════════════════════════════════════════════════════════════
+ Finds the first occurrence of the needle within the haystack and
+ returns the number of prior characters plus 1, or 0 if Y is nowhere
+ found within X
+Parameters
+ needle The string to look for in the haystack
+ haystack The string to search within
+ start The one-based index within the haystack to
+ start the search
+See Also
+ anonymize(), char(), decode(), encode(), endswith(), extract(),
+ group_concat(), group_spooky_hash(), gunzip(), gzip(),
+ humanize_duration(), humanize_file_size(), instr(), leftstr(),
+ length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
+ parse_url(), printf(), proper(), regexp_capture(),
+ regexp_capture_into_json(), regexp_match(), regexp_replace(),
+ replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(),
+ spooky_hash(), startswith(), strfilter(), substr(), trim(), unicode(),
+ unparse_url(), upper(), xpath()
+Examples
+#1 To search for the string 'abc' within 'abcabc' and starting at position 2:
+ ;SELECT charindex('abc', 'abcabc', 2) 
+
+
+#2 To search for the string 'abc' within 'abcdef' and starting at position 2:
+ ;SELECT charindex('abc', 'abcdef', 2) 
+
+
+
+coalesce(X, Y, ...)
+══════════════════════════════════════════════════════════════════════
+ Returns a copy of its first non-NULL argument, or NULL if all
+ arguments are NULL
+Parameters
+ X A value to check for NULL-ness
+ Y A value to check for NULL-ness
+
+Example
+#1 To get the first non-null value from three parameters:
+ ;SELECT coalesce(null, 0, null) 
+
+
+
+count(X)
+══════════════════════════════════════════════════════════════════════
+ If the argument is '*', the total number of rows in the group is
+ returned. Otherwise, the number of times the argument is non-NULL.
+Parameter
+ X The value to count.
+
+Examples
+#1 To get the count of the non-NULL rows of 'lnav_example_log':
+ ;SELECT count(*) FROM lnav_example_log 
+
+
+#2 To get the count of the non-NULL values of 'log_part' from 'lnav_example_log':
+ ;SELECT count(log_part) FROM lnav_example_log 
+
+
+
+cume_dist()
+══════════════════════════════════════════════════════════════════════
+ Returns the cumulative distribution
+See Also
+ dense_rank(), first_value(), lag(), last_value(), lead(), nth_value(),
+ ntile(), percent_rank(), rank(), row_number()
+
+date(timestring, modifier, ...)
+══════════════════════════════════════════════════════════════════════
+ Returns the date in this format: YYYY-MM-DD.
+Parameters
+ timestring The string to convert to a date.
+ modifier A transformation that is applied to the
+ value to the left.
+See Also
+ datetime(), humanize_duration(), julianday(), strftime(), time(),
+ timediff(), timeslice()
+Examples
+#1 To get the date portion of the timestamp '2017-01-02T03:04:05':
+ ;SELECT date('2017-01-02T03:04:05') 
+
+
+#2 To get the date portion of the timestamp '2017-01-02T03:04:05' plus one day:
+ ;SELECT date('2017-01-02T03:04:05', '+1 day') 
+
+
+#3 To get the date portion of the epoch timestamp 1491341842:
+ ;SELECT date(1491341842, 'unixepoch') 
+
+
+
+datetime(timestring, modifier, ...)
+══════════════════════════════════════════════════════════════════════
+ Returns the date and time in this format: YYYY-MM-DD HH:MM:SS.
+Parameters
+ timestring The string to convert to a date with time.
+ modifier A transformation that is applied to the
+ value to the left.
+See Also
+ date(), humanize_duration(), julianday(), strftime(), time(),
+ timediff(), timeslice()
+Examples
+#1 To get the date and time portion of the timestamp '2017-01-02T03:04:05':
+ ;SELECT datetime('2017-01-02T03:04:05') 
+
+
+#2 To get the date and time portion of the timestamp '2017-01-02T03:04:05' plus one
+ minute:
+ ;SELECT datetime('2017-01-02T03:04:05', '+1 minute')
+
+
+#3 To get the date and time portion of the epoch timestamp 1491341842:
+ ;SELECT datetime(1491341842, 'unixepoch') 
+
+
+
+decode(value, algorithm)
+══════════════════════════════════════════════════════════════════════
+ Decode the value using the given algorithm
+Parameters
+ value The value to decode
+ algorithm One of the following encoding algorithms:
+ base64, hex, uri
+See Also
+ anonymize(), char(), charindex(), encode(), endswith(), extract(),
+ group_concat(), group_spooky_hash(), gunzip(), gzip(),
+ humanize_duration(), humanize_file_size(), instr(), leftstr(),
+ length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
+ parse_url(), printf(), proper(), regexp_capture(),
+ regexp_capture_into_json(), regexp_match(), regexp_replace(),
+ replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(),
+ spooky_hash(), startswith(), strfilter(), substr(), trim(), unicode(),
+ unparse_url(), upper(), xpath()
+Example
+#1 To decode the URI-encoded string '%63%75%72%6c':
+ ;SELECT decode('%63%75%72%6c', 'uri') 
+
+
+
+degrees(radians)
+══════════════════════════════════════════════════════════════════════
+ Converts radians to degrees
+Parameter
+ radians The radians value to convert to degrees
+See Also
+ abs(), acos(), acosh(), asin(), asinh(), atan(), atan2(), atanh(),
+ atn2(), avg(), ceil(), exp(), floor(), log(), log10(), max(), min(),
+ pi(), power(), radians(), round(), sign(), square(), sum(), total()
+Example
+#1 To convert PI to degrees:
+ ;SELECT degrees(pi()) 
+
+
+
+dense_rank()
+══════════════════════════════════════════════════════════════════════
+ Returns the row_number() of the first peer in each group without
+ gaps
+See Also
+ cume_dist(), first_value(), lag(), last_value(), lead(), nth_value(),
+ ntile(), percent_rank(), rank(), row_number()
+
+dirname(path)
+══════════════════════════════════════════════════════════════════════
+ Extract the directory portion of a pathname.
+Parameter
+ path The path
+See Also
+ basename(), joinpath(), readlink(), realpath()
+Examples
+#1 To get the directory of a relative file path:
+ ;SELECT dirname('foo/bar') 
+
+
+#2 To get the directory of an absolute file path:
+ ;SELECT dirname('/foo/bar') 
+
+
+#3 To get the directory of a file in the root directory:
+ ;SELECT dirname('/bar') 
+
+
+#4 To get the directory of a Windows path:
+ ;SELECT dirname('foo\bar') 
+
+
+#5 To get the directory of an empty path:
+ ;SELECT dirname('') 
+
+
+
+echoln(value)
+══════════════════════════════════════════════════════════════════════
+ Echo the argument to the current output file and return it
+Parameter
+ value The value to write to the current output file
+See Also
+ :append-to, :echo, :export-session-to, :pipe-line-to, :pipe-to,
+ :redirect-to, :write-csv-to, :write-json-to, :write-jsonlines-to,
+ :write-raw-to, :write-screen-to, :write-table-to, :write-to,
+ :write-view-to
+
+encode(value, algorithm)
+══════════════════════════════════════════════════════════════════════
+ Encode the value using the given algorithm
+Parameters
+ value The value to encode
+ algorithm One of the following encoding algorithms:
+ base64, hex, uri
+See Also
+ anonymize(), char(), charindex(), decode(), endswith(), extract(),
+ group_concat(), group_spooky_hash(), gunzip(), gzip(),
+ humanize_duration(), humanize_file_size(), instr(), leftstr(),
+ length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
+ parse_url(), printf(), proper(), regexp_capture(),
+ regexp_capture_into_json(), regexp_match(), regexp_replace(),
+ replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(),
+ spooky_hash(), startswith(), strfilter(), substr(), trim(), unicode(),
+ unparse_url(), upper(), xpath()
+Examples
+#1 To base64-encode 'Hello, World!':
+ ;SELECT encode('Hello, World!', 'base64') 
+
+
+#2 To hex-encode 'Hello, World!':
+ ;SELECT encode('Hello, World!', 'hex') 
+
+
+#3 To URI-encode 'Hello, World!':
+ ;SELECT encode('Hello, World!', 'uri') 
+
+
+
+endswith(str, suffix)
+══════════════════════════════════════════════════════════════════════
+ Test if a string ends with the given suffix
+Parameters
+ str The string to test
+ suffix The suffix to check in the string
+See Also
+ anonymize(), char(), charindex(), decode(), encode(), extract(),
+ group_concat(), group_spooky_hash(), gunzip(), gzip(),
+ humanize_duration(), humanize_file_size(), instr(), leftstr(),
+ length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
+ parse_url(), printf(), proper(), regexp_capture(),
+ regexp_capture_into_json(), regexp_match(), regexp_replace(),
+ replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(),
+ spooky_hash(), startswith(), strfilter(), substr(), trim(), unicode(),
+ unparse_url(), upper(), xpath()
+Examples
+#1 To test if the string 'notbad.jpg' ends with '.jpg':
+ ;SELECT endswith('notbad.jpg', '.jpg') 
+
+
+#2 To test if the string 'notbad.png' starts with '.jpg':
+ ;SELECT endswith('notbad.png', '.jpg') 
+
+
+
+exp(x)
+══════════════════════════════════════════════════════════════════════
+ Returns the value of e raised to the power of x
+Parameter
+ x The exponent
+See Also
+ abs(), acos(), acosh(), asin(), asinh(), atan(), atan2(), atanh(),
+ atn2(), avg(), ceil(), degrees(), floor(), log(), log10(), max(),
+ min(), pi(), power(), radians(), round(), sign(), square(), sum(),
+ total()
+Example
+#1 To raise e to 2:
+ ;SELECT exp(2) 
+
+
+
+extract(str)
+══════════════════════════════════════════════════════════════════════
+ Automatically Parse and extract data from a string
+Parameter
+ str The string to parse
+See Also
+ anonymize(), char(), charindex(), decode(), encode(), endswith(),
+ group_concat(), group_spooky_hash(), gunzip(), gzip(),
+ humanize_duration(), humanize_file_size(), instr(), leftstr(),
+ length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
+ parse_url(), printf(), proper(), regexp_capture(),
+ regexp_capture_into_json(), regexp_match(), regexp_replace(),
+ replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(),
+ spooky_hash(), startswith(), strfilter(), substr(), trim(), unicode(),
+ unparse_url(), upper(), xpath()
+Examples
+#1 To extract key/value pairs from a string:
+ ;SELECT extract('foo=1 bar=2 name="Rolo Tomassi"') 
+
+
+#2 To extract columnar data from a string:
+ ;SELECT extract('1.0 abc 2.0') 
+
+
+
+first_value(expr)
+══════════════════════════════════════════════════════════════════════
+ Returns the result of evaluating the expression against the first
+ row in the window frame.
+Parameter
+ expr The expression to execute over the first row
+See Also
+ cume_dist(), dense_rank(), lag(), last_value(), lead(), nth_value(),
+ ntile(), percent_rank(), rank(), row_number()
+
+floor(num)
+══════════════════════════════════════════════════════════════════════
+ Returns the largest integer that is not greater than the argument
+Parameter
+ num The number to lower to the floor
+See Also
+ abs(), acos(), acosh(), asin(), asinh(), atan(), atan2(), atanh(),
+ atn2(), avg(), ceil(), degrees(), exp(), log(), log10(), max(), min(),
+ pi(), power(), radians(), round(), sign(), square(), sum(), total()
+Example
+#1 To get the floor of 1.23:
+ ;SELECT floor(1.23) 
+
+
+
+generate_series(start, stop, [step])
+══════════════════════════════════════════════════════════════════════
+ A table-valued-function that returns the whole numbers between a
+ lower and upper bound, inclusive
+Parameters
+ start The starting point of the series
+ stop The stopping point of the series
+ step The increment between each value
+Result
+ value The number in the series
+
+Examples
+#1 To generate the numbers in the range [10, 14]:
+ ;SELECT value FROM generate_series(10, 14) 
+
+
+#2 To generate every other number in the range [10, 14]:
+ ;SELECT value FROM generate_series(10, 14, 2) 
+
+
+#3 To count down from five to 1:
+ ;SELECT value FROM generate_series(1, 5, -1) 
+
+
+
+gethostbyaddr(hostname)
+══════════════════════════════════════════════════════════════════════
+ Get the hostname for the given IP address
+Parameter
+ hostname The IP address to lookup.
+See Also
+ gethostbyname()
+Example
+#1 To get the hostname for the IP '127.0.0.1':
+ ;SELECT gethostbyaddr('127.0.0.1') 
+
+
+
+gethostbyname(hostname)
+══════════════════════════════════════════════════════════════════════
+ Get the IP address for the given hostname
+Parameter
+ hostname The DNS hostname to lookup.
+See Also
+ gethostbyaddr()
+Example
+#1 To get the IP address for 'localhost':
+ ;SELECT gethostbyname('localhost') 
+
+
+
+glob(pattern, str)
+══════════════════════════════════════════════════════════════════════
+ Match a string against Unix glob pattern
+Parameters
+ pattern The glob pattern
+ str The string to match
+
+Example
+#1 To test if the string 'abc' matches the glob 'a*':
+ ;SELECT glob('a*', 'abc') 
+
+
+
+group_concat(X, [sep])
+══════════════════════════════════════════════════════════════════════
+ Returns a string which is the concatenation of all non-NULL values
+ of X separated by a comma or the given separator.
+Parameters
+ X The value to concatenate.
+ sep The separator to place between the values.
+See Also
+ anonymize(), char(), charindex(), decode(), encode(), endswith(),
+ extract(), group_spooky_hash(), gunzip(), gzip(), humanize_duration(),
+ humanize_file_size(), instr(), leftstr(), length(), logfmt2json(),
+ lower(), ltrim(), padc(), padl(), padr(), parse_url(), printf(),
+ proper(), regexp_capture(), regexp_capture_into_json(), regexp_match(),
+ regexp_replace(), replace(), replicate(), reverse(), rightstr(),
+ rtrim(), sparkline(), spooky_hash(), startswith(), strfilter(),
+ substr(), trim(), unicode(), unparse_url(), upper(), xpath()
+Examples
+#1 To concatenate the values of the column 'ex_procname' from the table
+ 'lnav_example_log':
+ ;SELECT group_concat(ex_procname) FROM lnav_example_log
+
+
+#2 To join the values of the column 'ex_procname' using the string ', ':
+ ;SELECT group_concat(ex_procname, ', ') FROM lnav_example_log
+
+
+#3 To concatenate the distinct values of the column 'ex_procname' from the table
+ 'lnav_example_log':
+ ;SELECT group_concat(DISTINCT ex_procname) FROM lnav_example_log
+
+
+
+group_spooky_hash(str, ...)
+══════════════════════════════════════════════════════════════════════
+ Compute the hash value for the given arguments
+Parameter
+ str The string to hash
+See Also
+ anonymize(), char(), charindex(), decode(), encode(), endswith(),
+ extract(), group_concat(), gunzip(), gzip(), humanize_duration(),
+ humanize_file_size(), instr(), leftstr(), length(), logfmt2json(),
+ lower(), ltrim(), padc(), padl(), padr(), parse_url(), printf(),
+ proper(), regexp_capture(), regexp_capture_into_json(), regexp_match(),
+ regexp_replace(), replace(), replicate(), reverse(), rightstr(),
+ rtrim(), sparkline(), spooky_hash(), startswith(), strfilter(),
+ substr(), trim(), unicode(), unparse_url(), upper(), xpath()
+Example
+#1 To produce a hash of all of the values of 'column1':
+ ;SELECT group_spooky_hash(column1) FROM (VALUES ('abc'), ('123'))
+
+
+
+gunzip(b, ...)
+══════════════════════════════════════════════════════════════════════
+ Decompress a gzip file
+Parameter
+ b The blob to decompress
+See Also
+ anonymize(), char(), charindex(), decode(), encode(), endswith(),
+ extract(), group_concat(), group_spooky_hash(), gzip(),
+ humanize_duration(), humanize_file_size(), instr(), leftstr(),
+ length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
+ parse_url(), printf(), proper(), regexp_capture(),
+ regexp_capture_into_json(), regexp_match(), regexp_replace(),
+ replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(),
+ spooky_hash(), startswith(), strfilter(), substr(), trim(), unicode(),
+ unparse_url(), upper(), xpath()
+
+gzip(value, ...)
+══════════════════════════════════════════════════════════════════════
+ Compress a string into a gzip file
+Parameter
+ value The value to compress
+See Also
+ anonymize(), char(), charindex(), decode(), encode(), endswith(),
+ extract(), group_concat(), group_spooky_hash(), gunzip(),
+ humanize_duration(), humanize_file_size(), instr(), leftstr(),
+ length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
+ parse_url(), printf(), proper(), regexp_capture(),
+ regexp_capture_into_json(), regexp_match(), regexp_replace(),
+ replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(),
+ spooky_hash(), startswith(), strfilter(), substr(), trim(), unicode(),
+ unparse_url(), upper(), xpath()
+
+hex(X)
+══════════════════════════════════════════════════════════════════════
+ Returns a string which is the upper-case hexadecimal rendering of
+ the content of its argument.
+Parameter
+ X The blob to convert to hexadecimal
+
+Example
+#1 To get the hexadecimal rendering of the string 'abc':
+ ;SELECT hex('abc') 
+
+
+
+humanize_duration(secs)
+══════════════════════════════════════════════════════════════════════
+ Format the given seconds value as an abbreviated duration string
+Parameter
+ secs The duration in seconds
+See Also
+ anonymize(), char(), charindex(), date(), datetime(), decode(),
+ encode(), endswith(), extract(), group_concat(), group_spooky_hash(),
+ gunzip(), gzip(), humanize_file_size(), instr(), julianday(),
+ leftstr(), length(), logfmt2json(), lower(), ltrim(), padc(), padl(),
+ padr(), parse_url(), printf(), proper(), regexp_capture(),
+ regexp_capture_into_json(), regexp_match(), regexp_replace(),
+ replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(),
+ spooky_hash(), startswith(), strfilter(), strftime(), substr(), time(),
+ timediff(), timeslice(), trim(), unicode(), unparse_url(), upper(),
+ xpath()
+Examples
+#1 To format a duration:
+ ;SELECT humanize_duration(15 * 60) 
+
+
+#2 To format a sub-second value:
+ ;SELECT humanize_duration(1.5) 
+
+
+
+humanize_file_size(value)
+══════════════════════════════════════════════════════════════════════
+ Format the given file size as a human-friendly string
+Parameter
+ value The file size to format
+See Also
+ anonymize(), char(), charindex(), decode(), encode(), endswith(),
+ extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
+ humanize_duration(), instr(), leftstr(), length(), logfmt2json(),
+ lower(), ltrim(), padc(), padl(), padr(), parse_url(), printf(),
+ proper(), regexp_capture(), regexp_capture_into_json(), regexp_match(),
+ regexp_replace(), replace(), replicate(), reverse(), rightstr(),
+ rtrim(), sparkline(), spooky_hash(), startswith(), strfilter(),
+ substr(), trim(), unicode(), unparse_url(), upper(), xpath()
+Example
+#1 To format an amount:
+ ;SELECT humanize_file_size(10 * 1024 * 1024) 
+
+
+
+ifnull(X, Y)
+══════════════════════════════════════════════════════════════════════
+ Returns a copy of its first non-NULL argument, or NULL if both
+ arguments are NULL
+Parameters
+ X A value to check for NULL-ness
+ Y A value to check for NULL-ness
+
+Example
+#1 To get the first non-null value between null and zero:
+ ;SELECT ifnull(null, 0) 
+
+
+
+instr(haystack, needle)
+══════════════════════════════════════════════════════════════════════
+ Finds the first occurrence of the needle within the haystack and
+ returns the number of prior characters plus 1, or 0 if the needle
+ was not found
+Parameters
+ haystack The string to search within
+ needle The string to look for in the haystack
+See Also
+ anonymize(), char(), charindex(), decode(), encode(), endswith(),
+ extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
+ humanize_duration(), humanize_file_size(), leftstr(), length(),
+ logfmt2json(), lower(), ltrim(), padc(), padl(), padr(), parse_url(),
+ printf(), proper(), regexp_capture(), regexp_capture_into_json(),
+ regexp_match(), regexp_replace(), replace(), replicate(), reverse(),
+ rightstr(), rtrim(), sparkline(), spooky_hash(), startswith(),
+ strfilter(), substr(), trim(), unicode(), unparse_url(), upper(),
+ xpath()
+Example
+#1 To test get the position of 'b' in the string 'abc':
+ ;SELECT instr('abc', 'b') 
+
+
+
+jget(json, ptr, [default])
+══════════════════════════════════════════════════════════════════════
+ Get the value from a JSON object using a JSON-Pointer.
+Parameters
+ json The JSON object to query.
+ ptr The JSON-Pointer to lookup in the object.
+ default The default value if the value was not found
+See Also
+ json_concat(), json_contains(), json_group_array(),
+ json_group_object(), yaml_to_json()
+Examples
+#1 To get the root of a JSON value:
+ ;SELECT jget('1', '') 
+
+
+#2 To get the property named 'b' in a JSON object:
+ ;SELECT jget('{ "a": 1, "b": 2 }', '/b') 
+
+
+#3 To get the 'msg' property and return a default if it does not exist:
+ ;SELECT jget(null, '/msg', 'Hello') 
+
+
+
+joinpath(path, ...)
+══════════════════════════════════════════════════════════════════════
+ Join components of a path together.
+Parameter
+ path One or more path components to join together. If an
+ argument starts with a forward or backward slash, it will be
+ considered an absolute path and any preceding elements will
+ be ignored.
+See Also
+ basename(), dirname(), readlink(), realpath()
+Examples
+#1 To join a directory and file name into a relative path:
+ ;SELECT joinpath('foo', 'bar') 
+
+
+#2 To join an empty component with other names into a relative path:
+ ;SELECT joinpath('', 'foo', 'bar') 
+
+
+#3 To create an absolute path with two path components:
+ ;SELECT joinpath('/', 'foo', 'bar') 
+
+
+#4 To create an absolute path from a path component that starts with a forward slash:
+ ;SELECT joinpath('/', 'foo', '/bar') 
+
+
+
+json_concat(json, value, ...)
+══════════════════════════════════════════════════════════════════════
+ Returns an array with the given values concatenated onto the end.
+ If the initial value is null, the result will be an array with the
+ given elements. If the initial value is an array, the result will
+ be an array with the given values at the end. If the initial value
+ is not null or an array, the result will be an array with two
+ elements: the initial value and the given value.
+Parameters
+ json The initial JSON value.
+ value The value(s) to add to the end of the array.
+See Also
+ jget(), json_contains(), json_group_array(), json_group_object(),
+ yaml_to_json()
+Examples
+#1 To append the number 4 to null:
+ ;SELECT json_concat(NULL, 4) 
+
+
+#2 To append 4 and 5 to the array [1, 2, 3]:
+ ;SELECT json_concat('[1, 2, 3]', 4, 5) 
+
+
+#3 To concatenate two arrays together:
+ ;SELECT json_concat('[1, 2, 3]', json('[4, 5]')) 
+
+
+
+json_contains(json, value)
+══════════════════════════════════════════════════════════════════════
+ Check if a JSON value contains the given element.
+Parameters
+ json The JSON value to query.
+ value The value to look for in the first argument
+See Also
+ jget(), json_concat(), json_group_array(), json_group_object(),
+ yaml_to_json()
+Examples
+#1 To test if a JSON array contains the number 4:
+ ;SELECT json_contains('[1, 2, 3]', 4) 
+
+
+#2 To test if a JSON array contains the string 'def':
+ ;SELECT json_contains('["abc", "def"]', 'def') 
+
+
+
+json_group_array(value, ...)
+══════════════════════════════════════════════════════════════════════
+ Collect the given values from a query into a JSON array
+Parameter
+ value The values to append to the array
+See Also
+ jget(), json_concat(), json_contains(), json_group_object(),
+ yaml_to_json()
+Examples
+#1 To create an array from arguments:
+ ;SELECT json_group_array('one', 2, 3.4) 
+
+
+#2 To create an array from a column of values:
+ ;SELECT json_group_array(column1) FROM (VALUES (1), (2), (3))
+
+
+
+json_group_object(name, value, ...)
+══════════════════════════════════════════════════════════════════════
+ Collect the given values from a query into a JSON object
+Parameters
+ name The property name for the value
+ value The value to add to the object
+See Also
+ jget(), json_concat(), json_contains(), json_group_array(),
+ yaml_to_json()
+Examples
+#1 To create an object from arguments:
+ ;SELECT json_group_object('a', 1, 'b', 2) 
+
+
+#2 To create an object from a pair of columns:
+ ;SELECT json_group_object(column1, column2) FROM (VALUES ('a', 1), ('b', 2))
+
+
+
+julianday(timestring, modifier, ...)
+══════════════════════════════════════════════════════════════════════
+ Returns the number of days since noon in Greenwich on November 24,
+ 4714 B.C.
+Parameters
+ timestring The string to convert to a date with time.
+ modifier A transformation that is applied to the
+ value to the left.
+See Also
+ date(), datetime(), humanize_duration(), strftime(), time(),
+ timediff(), timeslice()
+Examples
+#1 To get the julian day from the timestamp '2017-01-02T03:04:05':
+ ;SELECT julianday('2017-01-02T03:04:05') 
+
+
+#2 To get the julian day from the timestamp '2017-01-02T03:04:05' plus one minute:
+ ;SELECT julianday('2017-01-02T03:04:05', '+1 minute')
+
+
+#3 To get the julian day from the timestamp 1491341842:
+ ;SELECT julianday(1491341842, 'unixepoch') 
+
+
+
+lag(expr, [offset], [default])
+══════════════════════════════════════════════════════════════════════
+ Returns the result of evaluating the expression against the previous
+ row in the partition.
+Parameters
+ expr The expression to execute over the previous row
+ offset The offset from the current row in the partition
+ default The default value if the previous row does not
+ exist instead of NULL
+See Also
+ cume_dist(), dense_rank(), first_value(), last_value(), lead(),
+ nth_value(), ntile(), percent_rank(), rank(), row_number()
+
+last_insert_rowid()
+══════════════════════════════════════════════════════════════════════
+ Returns the ROWID of the last row insert from the database
+ connection which invoked the function
+
+
+last_value(expr)
+══════════════════════════════════════════════════════════════════════
+ Returns the result of evaluating the expression against the last row
+ in the window frame.
+Parameter
+ expr The expression to execute over the last row
+See Also
+ cume_dist(), dense_rank(), first_value(), lag(), lead(), nth_value(),
+ ntile(), percent_rank(), rank(), row_number()
+
+lead(expr, [offset], [default])
+══════════════════════════════════════════════════════════════════════
+ Returns the result of evaluating the expression against the next row
+ in the partition.
+Parameters
+ expr The expression to execute over the next row
+ offset The offset from the current row in the partition
+ default The default value if the next row does not exist
+ instead of NULL
+See Also
+ cume_dist(), dense_rank(), first_value(), lag(), last_value(),
+ nth_value(), ntile(), percent_rank(), rank(), row_number()
+
+leftstr(str, N)
+══════════════════════════════════════════════════════════════════════
+ Returns the N leftmost (UTF-8) characters in the given string.
+Parameters
+ str The string to return subset.
+ N The number of characters from the left side of the
+ string to return.
+See Also
+ anonymize(), char(), charindex(), decode(), encode(), endswith(),
+ extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
+ humanize_duration(), humanize_file_size(), instr(), length(),
+ logfmt2json(), lower(), ltrim(), padc(), padl(), padr(), parse_url(),
+ printf(), proper(), regexp_capture(), regexp_capture_into_json(),
+ regexp_match(), regexp_replace(), replace(), replicate(), reverse(),
+ rightstr(), rtrim(), sparkline(), spooky_hash(), startswith(),
+ strfilter(), substr(), trim(), unicode(), unparse_url(), upper(),
+ xpath()
+Examples
+#1 To get the first character of the string 'abc':
+ ;SELECT leftstr('abc', 1) 
+
+
+#2 To get the first ten characters of a string, regardless of size:
+ ;SELECT leftstr('abc', 10) 
+
+
+
+length(str)
+══════════════════════════════════════════════════════════════════════
+ Returns the number of characters (not bytes) in the given string
+ prior to the first NUL character
+Parameter
+ str The string to determine the length of
+See Also
+ anonymize(), char(), charindex(), decode(), encode(), endswith(),
+ extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
+ humanize_duration(), humanize_file_size(), instr(), leftstr(),
+ logfmt2json(), lower(), ltrim(), padc(), padl(), padr(), parse_url(),
+ printf(), proper(), regexp_capture(), regexp_capture_into_json(),
+ regexp_match(), regexp_replace(), replace(), replicate(), reverse(),
+ rightstr(), rtrim(), sparkline(), spooky_hash(), startswith(),
+ strfilter(), substr(), trim(), unicode(), unparse_url(), upper(),
+ xpath()
+Example
+#1 To get the length of the string 'abc':
+ ;SELECT length('abc') 
+
+
+
+like(pattern, str, [escape])
+══════════════════════════════════════════════════════════════════════
+ Match a string against a pattern
+Parameters
+ pattern The pattern to match. A percent symbol (%) will
+ match zero or more characters and an underscore (_) will
+ match a single character.
+ str The string to match
+ escape The escape character that can be used to prefix
+ a literal percent or underscore in the pattern.
+
+Examples
+#1 To test if the string 'aabcc' contains the letter 'b':
+ ;SELECT like('%b%', 'aabcc') 
+
+
+#2 To test if the string 'aab%' ends with 'b%':
+ ;SELECT like('%b:%', 'aab%', ':') 
+
+
+
+likelihood(value, probability)
+══════════════════════════════════════════════════════════════════════
+ Provides a hint to the query planner that the first argument is a
+ boolean that is true with the given probability
+Parameters
+ value The boolean value to return
+ probability A floating point constant between 0.0
+ and 1.0
+
+
+likely(value)
+══════════════════════════════════════════════════════════════════════
+ Short-hand for likelihood(X,0.9375)
+Parameter
+ value The boolean value to return
+
+
+lnav_top_file()
+══════════════════════════════════════════════════════════════════════
+ Return the name of the file that the top line in the current view
+ came from.
+
+
+lnav_version()
+══════════════════════════════════════════════════════════════════════
+ Return the current version of lnav
+
+
+load_extension(path, [entry-point])
+══════════════════════════════════════════════════════════════════════
+ Loads SQLite extensions out of the given shared library file using
+ the given entry point.
+Parameters
+ path The path to the shared library
+ containing the extension.
+ entry-point
+
+
+log(x)
+══════════════════════════════════════════════════════════════════════
+ Returns the natural logarithm of x
+Parameter
+ x The number
+See Also
+ abs(), acos(), acosh(), asin(), asinh(), atan(), atan2(), atanh(),
+ atn2(), avg(), ceil(), degrees(), exp(), floor(), log10(), max(),
+ min(), pi(), power(), radians(), round(), sign(), square(), sum(),
+ total()
+Example
+#1 To get the natual logarithm of 8:
+ ;SELECT log(8) 
+
+
+
+log10(x)
+══════════════════════════════════════════════════════════════════════
+ Returns the base-10 logarithm of X
+Parameter
+ x The number
+See Also
+ abs(), acos(), acosh(), asin(), asinh(), atan(), atan2(), atanh(),
+ atn2(), avg(), ceil(), degrees(), exp(), floor(), log(), max(), min(),
+ pi(), power(), radians(), round(), sign(), square(), sum(), total()
+Example
+#1 To get the logarithm of 100:
+ ;SELECT log10(100) 
+
+
+
+log_top_datetime()
+══════════════════════════════════════════════════════════════════════
+ Return the timestamp of the line at the top of the log view.
+
+
+log_top_line()
+══════════════════════════════════════════════════════════════════════
+ Return the line number at the top of the log view.
+
+
+logfmt2json(str)
+══════════════════════════════════════════════════════════════════════
+ Convert a logfmt-encoded string into JSON
+Parameter
+ str The logfmt message to parse
+See Also
+ anonymize(), char(), charindex(), decode(), encode(), endswith(),
+ extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
+ humanize_duration(), humanize_file_size(), instr(), leftstr(),
+ length(), lower(), ltrim(), padc(), padl(), padr(), parse_url(),
+ printf(), proper(), regexp_capture(), regexp_capture_into_json(),
+ regexp_match(), regexp_replace(), replace(), replicate(), reverse(),
+ rightstr(), rtrim(), sparkline(), spooky_hash(), startswith(),
+ strfilter(), substr(), trim(), unicode(), unparse_url(), upper(),
+ xpath()
+Example
+#1 To extract key/value pairs from a log message:
+ ;SELECT logfmt2json('foo=1 bar=2 name="Rolo Tomassi"')
+
+
+
+lower(str)
+══════════════════════════════════════════════════════════════════════
+ Returns a copy of the given string with all ASCII characters
+ converted to lower case.
+Parameter
+ str The string to convert.
+See Also
+ anonymize(), char(), charindex(), decode(), encode(), endswith(),
+ extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
+ humanize_duration(), humanize_file_size(), instr(), leftstr(),
+ length(), logfmt2json(), ltrim(), padc(), padl(), padr(), parse_url(),
+ printf(), proper(), regexp_capture(), regexp_capture_into_json(),
+ regexp_match(), regexp_replace(), replace(), replicate(), reverse(),
+ rightstr(), rtrim(), sparkline(), spooky_hash(), startswith(),
+ strfilter(), substr(), trim(), unicode(), unparse_url(), upper(),
+ xpath()
+Example
+#1 To lowercase the string 'AbC':
+ ;SELECT lower('AbC') 
+
+
+
+ltrim(str, [chars])
+══════════════════════════════════════════════════════════════════════
+ Returns a string formed by removing any and all characters that
+ appear in the second argument from the left side of the first.
+Parameters
+ str The string to trim characters from the left side
+ chars The characters to trim. Defaults to spaces.
+See Also
+ anonymize(), char(), charindex(), decode(), encode(), endswith(),
+ extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
+ humanize_duration(), humanize_file_size(), instr(), leftstr(),
+ length(), logfmt2json(), lower(), padc(), padl(), padr(), parse_url(),
+ printf(), proper(), regexp_capture(), regexp_capture_into_json(),
+ regexp_match(), regexp_replace(), replace(), replicate(), reverse(),
+ rightstr(), rtrim(), sparkline(), spooky_hash(), startswith(),
+ strfilter(), substr(), trim(), unicode(), unparse_url(), upper(),
+ xpath()
+Examples
+#1 To trim the leading space characters from the string ' abc':
+ ;SELECT ltrim(' abc') 
+
+
+#2 To trim the characters 'a' or 'b' from the left side of the string 'aaaabbbc':
+ ;SELECT ltrim('aaaabbbc', 'ab') 
+
+
+
+max(X, ...)
+══════════════════════════════════════════════════════════════════════
+ Returns the argument with the maximum value, or return NULL if any
+ argument is NULL.
+Parameter
+ X The numbers to find the maximum of. If only one argument is
+ given, this function operates as an aggregate.
+See Also
+ abs(), acos(), acosh(), asin(), asinh(), atan(), atan2(), atanh(),
+ atn2(), avg(), ceil(), degrees(), exp(), floor(), log(), log10(),
+ min(), pi(), power(), radians(), round(), sign(), square(), sum(),
+ total()
+Examples
+#1 To get the largest value from the parameters:
+ ;SELECT max(2, 1, 3) 
+
+
+#2 To get the largest value from an aggregate:
+ ;SELECT max(status) FROM http_status_codes 
+
+
+
+min(X, ...)
+══════════════════════════════════════════════════════════════════════
+ Returns the argument with the minimum value, or return NULL if any
+ argument is NULL.
+Parameter
+ X The numbers to find the minimum of. If only one argument is
+ given, this function operates as an aggregate.
+See Also
+ abs(), acos(), acosh(), asin(), asinh(), atan(), atan2(), atanh(),
+ atn2(), avg(), ceil(), degrees(), exp(), floor(), log(), log10(),
+ max(), pi(), power(), radians(), round(), sign(), square(), sum(),
+ total()
+Examples
+#1 To get the smallest value from the parameters:
+ ;SELECT min(2, 1, 3) 
+
+
+#2 To get the smallest value from an aggregate:
+ ;SELECT min(status) FROM http_status_codes 
+
+
+
+nth_value(expr, N)
+══════════════════════════════════════════════════════════════════════
+ Returns the result of evaluating the expression against the nth row
+ in the window frame.
+Parameters
+ expr The expression to execute over the nth row
+ N The row number
+See Also
+ cume_dist(), dense_rank(), first_value(), lag(), last_value(), lead(),
+ ntile(), percent_rank(), rank(), row_number()
+
+ntile(groups)
+══════════════════════════════════════════════════════════════════════
+ Returns the number of the group that the current row is a part of
+Parameter
+ groups The number of groups
+See Also
+ cume_dist(), dense_rank(), first_value(), lag(), last_value(), lead(),
+ nth_value(), percent_rank(), rank(), row_number()
+
+nullif(X, Y)
+══════════════════════════════════════════════════════════════════════
+ Returns its first argument if the arguments are different and NULL
+ if the arguments are the same.
+Parameters
+ X The first argument to compare.
+ Y The argument to compare against the first.
+
+Examples
+#1 To test if 1 is different from 1:
+ ;SELECT nullif(1, 1) 
+
+
+#2 To test if 1 is different from 2:
+ ;SELECT nullif(1, 2) 
+
+
+
+padc(str, len)
+══════════════════════════════════════════════════════════════════════
+ Pad the given string with enough spaces to make it centered within
+ the given length
+Parameters
+ str The string to pad
+ len The minimum desired length of the output string
+See Also
+ anonymize(), char(), charindex(), decode(), encode(), endswith(),
+ extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
+ humanize_duration(), humanize_file_size(), instr(), leftstr(),
+ length(), logfmt2json(), lower(), ltrim(), padl(), padr(), parse_url(),
+ printf(), proper(), regexp_capture(), regexp_capture_into_json(),
+ regexp_match(), regexp_replace(), replace(), replicate(), reverse(),
+ rightstr(), rtrim(), sparkline(), spooky_hash(), startswith(),
+ strfilter(), substr(), trim(), unicode(), unparse_url(), upper(),
+ xpath()
+Examples
+#1 To pad the string 'abc' to a length of six characters:
+ ;SELECT padc('abc', 6) || 'def' 
+
+
+#2 To pad the string 'abcdef' to a length of eight characters:
+ ;SELECT padc('abcdef', 8) || 'ghi' 
+
+
+
+padl(str, len)
+══════════════════════════════════════════════════════════════════════
+ Pad the given string with leading spaces until it reaches the
+ desired length
+Parameters
+ str The string to pad
+ len The minimum desired length of the output string
+See Also
+ anonymize(), char(), charindex(), decode(), encode(), endswith(),
+ extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
+ humanize_duration(), humanize_file_size(), instr(), leftstr(),
+ length(), logfmt2json(), lower(), ltrim(), padc(), padr(), parse_url(),
+ printf(), proper(), regexp_capture(), regexp_capture_into_json(),
+ regexp_match(), regexp_replace(), replace(), replicate(), reverse(),
+ rightstr(), rtrim(), sparkline(), spooky_hash(), startswith(),
+ strfilter(), substr(), trim(), unicode(), unparse_url(), upper(),
+ xpath()
+Examples
+#1 To pad the string 'abc' to a length of six characters:
+ ;SELECT padl('abc', 6) 
+
+
+#2 To pad the string 'abcdef' to a length of four characters:
+ ;SELECT padl('abcdef', 4) 
+
+
+
+padr(str, len)
+══════════════════════════════════════════════════════════════════════
+ Pad the given string with trailing spaces until it reaches the
+ desired length
+Parameters
+ str The string to pad
+ len The minimum desired length of the output string
+See Also
+ anonymize(), char(), charindex(), decode(), encode(), endswith(),
+ extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
+ humanize_duration(), humanize_file_size(), instr(), leftstr(),
+ length(), logfmt2json(), lower(), ltrim(), padc(), padl(), parse_url(),
+ printf(), proper(), regexp_capture(), regexp_capture_into_json(),
+ regexp_match(), regexp_replace(), replace(), replicate(), reverse(),
+ rightstr(), rtrim(), sparkline(), spooky_hash(), startswith(),
+ strfilter(), substr(), trim(), unicode(), unparse_url(), upper(),
+ xpath()
+Examples
+#1 To pad the string 'abc' to a length of six characters:
+ ;SELECT padr('abc', 6) || 'def' 
+
+
+#2 To pad the string 'abcdef' to a length of four characters:
+ ;SELECT padr('abcdef', 4) || 'ghi' 
+
+
+
+parse_url(url)
+══════════════════════════════════════════════════════════════════════
+ Parse a URL and return the components in a JSON object. Limitations:
+ not all URL schemes are supported and repeated query parameters are
+ not captured.
+Parameter
+ url The URL to parse
+Results
+ scheme The URL's scheme
+ username The name of the user specified in the URL
+ password The password specified in the URL
+ host The host name / IP specified in the URL
+ port The port specified in the URL
+ path The path specified in the URL
+ query The query string in the URL
+ parameters An object containing the query parameters
+ fragment The fragment specified in the URL
+See Also
+ anonymize(), char(), charindex(), decode(), encode(), endswith(),
+ extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
+ humanize_duration(), humanize_file_size(), instr(), leftstr(),
+ length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
+ printf(), proper(), regexp_capture(), regexp_capture_into_json(),
+ regexp_match(), regexp_replace(), replace(), replicate(), reverse(),
+ rightstr(), rtrim(), sparkline(), spooky_hash(), startswith(),
+ strfilter(), substr(), trim(), unicode(), unparse_url(), unparse_url(),
+ upper(), xpath()
+Examples
+#1 To parse the URL 'https://example.com/search?q=hello%20world':
+ ;SELECT parse_url('https://example.com/search?q=hello%20world')
+
+
+#2 To parse the URL 'https://alice@[fe80::14ff:4ee5:1215:2fb2]':
+ ;SELECT parse_url('https://alice@[fe80::14ff:4ee5:1215:2fb2]')
+
+
+
+percent_rank()
+══════════════════════════════════════════════════════════════════════
+ Returns (rank - 1) / (partition-rows - 1)
+See Also
+ cume_dist(), dense_rank(), first_value(), lag(), last_value(), lead(),
+ nth_value(), ntile(), rank(), row_number()
+
+pi()
+══════════════════════════════════════════════════════════════════════
+ Returns the value of PI
+See Also
+ abs(), acos(), acosh(), asin(), asinh(), atan(), atan2(), atanh(),
+ atn2(), avg(), ceil(), degrees(), exp(), floor(), log(), log10(),
+ max(), min(), power(), radians(), round(), sign(), square(), sum(),
+ total()
+Example
+#1 To get the value of PI:
+ ;SELECT pi() 
+
+
+
+power(base, exp)
+══════════════════════════════════════════════════════════════════════
+ Returns the base to the given exponent
+Parameters
+ base The base number
+ exp The exponent
+See Also
+ abs(), acos(), acosh(), asin(), asinh(), atan(), atan2(), atanh(),
+ atn2(), avg(), ceil(), degrees(), exp(), floor(), log(), log10(),
+ max(), min(), pi(), radians(), round(), sign(), square(), sum(),
+ total()
+Example
+#1 To raise two to the power of three:
+ ;SELECT power(2, 3) 
+
+
+
+printf(format, X)
+══════════════════════════════════════════════════════════════════════
+ Returns a string with this functions arguments substituted into the
+ given format. Substitution points are specified using percent (%)
+ options, much like the standard C printf() function.
+Parameters
+ format The format of the string to return.
+ X The argument to substitute at a given position in
+ the format.
+See Also
+ anonymize(), char(), charindex(), decode(), encode(), endswith(),
+ extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
+ humanize_duration(), humanize_file_size(), instr(), leftstr(),
+ length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
+ parse_url(), proper(), regexp_capture(), regexp_capture_into_json(),
+ regexp_match(), regexp_replace(), replace(), replicate(), reverse(),
+ rightstr(), rtrim(), sparkline(), spooky_hash(), startswith(),
+ strfilter(), substr(), trim(), unicode(), unparse_url(), upper(),
+ xpath()
+Examples
+#1 To substitute 'World' into the string 'Hello, %s!':
+ ;SELECT printf('Hello, %s!', 'World') 
+
+
+#2 To right-align 'small' in the string 'align:' with a column width of 10:
+ ;SELECT printf('align: % 10s', 'small') 
+
+
+#3 To format 11 with a width of five characters and leading zeroes:
+ ;SELECT printf('value: %05d', 11) 
+
+
+
+proper(str)
+══════════════════════════════════════════════════════════════════════
+ Capitalize the first character of words in the given string
+Parameter
+ str The string to capitalize.
+See Also
+ anonymize(), char(), charindex(), decode(), encode(), endswith(),
+ extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
+ humanize_duration(), humanize_file_size(), instr(), leftstr(),
+ length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
+ parse_url(), printf(), regexp_capture(), regexp_capture_into_json(),
+ regexp_match(), regexp_replace(), replace(), replicate(), reverse(),
+ rightstr(), rtrim(), sparkline(), spooky_hash(), startswith(),
+ strfilter(), substr(), trim(), unicode(), unparse_url(), upper(),
+ xpath()
+Example
+#1 To capitalize the words in the string 'hello, world!':
+ ;SELECT proper('hello, world!') 
+
+
+
+quote(X)
+══════════════════════════════════════════════════════════════════════
+ Returns the text of an SQL literal which is the value of its
+ argument suitable for inclusion into an SQL statement.
+Parameter
+ X The string to quote.
+
+Examples
+#1 To quote the string 'abc':
+ ;SELECT quote('abc') 
+
+
+#2 To quote the string 'abc'123':
+ ;SELECT quote('abc''123') 
+
+
+
+radians(degrees)
+══════════════════════════════════════════════════════════════════════
+ Converts degrees to radians
+Parameter
+ degrees The degrees value to convert to radians
+See Also
+ abs(), acos(), acosh(), asin(), asinh(), atan(), atan2(), atanh(),
+ atn2(), avg(), ceil(), degrees(), exp(), floor(), log(), log10(),
+ max(), min(), pi(), power(), round(), sign(), square(), sum(), total()
+Example
+#1 To convert 180 degrees to radians:
+ ;SELECT radians(180) 
+
+
+
+raise_error(msg)
+══════════════════════════════════════════════════════════════════════
+ Raises an error with the given message when executed
+Parameter
+ msg The error message
+
+
+random()
+══════════════════════════════════════════════════════════════════════
+ Returns a pseudo-random integer between -9223372036854775808 and
+ +9223372036854775807.
+
+
+randomblob(N)
+══════════════════════════════════════════════════════════════════════
+ Return an N-byte blob containing pseudo-random bytes.
+Parameter
+ N The size of the blob in bytes.
+
+
+rank()
+══════════════════════════════════════════════════════════════════════
+ Returns the row_number() of the first peer in each group with gaps
+See Also
+ cume_dist(), dense_rank(), first_value(), lag(), last_value(), lead(),
+ nth_value(), ntile(), percent_rank(), row_number()
+
+readlink(path)
+══════════════════════════════════════════════════════════════════════
+ Read the target of a symbolic link.
+Parameter
+ path The path to the symbolic link.
+See Also
+ basename(), dirname(), joinpath(), realpath()
+
+realpath(path)
+══════════════════════════════════════════════════════════════════════
+ Returns the resolved version of the given path, expanding symbolic
+ links and resolving '.' and '..' references.
+Parameter
+ path The path to resolve.
+See Also
+ basename(), dirname(), joinpath(), readlink()
+
+regexp(re, str)
+══════════════════════════════════════════════════════════════════════
+ Test if a string matches a regular expression
+Parameters
+ re The regular expression to use
+ str The string to test against the regular expression
+
+
+regexp_capture(string, pattern)
+══════════════════════════════════════════════════════════════════════
+ A table-valued function that executes a regular-expression over a
+ string and returns the captured values. If the regex only matches a
+ subset of the input string, it will be rerun on the remaining parts
+ of the string until no more matches are found.
+Parameters
+ string The string to match against the given pattern.
+ pattern The regular expression to match.
+Results
+ match_index The match iteration. This value
+ will increase each time a new match is found in the
+ input string.
+ capture_index The index of the capture in the
+ regex.
+ capture_name The name of the capture in the
+ regex.
+ capture_count The total number of captures in the
+ regex.
+ range_start The start of the capture in the
+ input string.
+ range_stop The stop of the capture in the input
+ string.
+ content The captured value from the string.
+See Also
+ anonymize(), char(), charindex(), decode(), encode(), endswith(),
+ extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
+ humanize_duration(), humanize_file_size(), instr(), leftstr(),
+ length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
+ parse_url(), printf(), proper(), regexp_capture_into_json(),
+ regexp_match(), regexp_replace(), replace(), replicate(), reverse(),
+ rightstr(), rtrim(), sparkline(), spooky_hash(), startswith(),
+ strfilter(), substr(), trim(), unicode(), unparse_url(), upper(),
+ xpath()
+Example
+#1 To extract the key/value pairs 'a'/1 and 'b'/2 from the string 'a=1; b=2':
+ ;SELECT * FROM regexp_capture('a=1; b=2', '(\w+)=(\d+)')
+
+
+
+regexp_capture_into_json(string, pattern, [options])
+══════════════════════════════════════════════════════════════════════
+ A table-valued function that executes a regular-expression over a
+ string and returns the captured values as a JSON object. If the
+ regex only matches a subset of the input string, it will be rerun on
+ the remaining parts of the string until no more matches are found.
+Parameters
+ string The string to match against the given pattern.
+ pattern The regular expression to match.
+ options A JSON object with the following option:
+ convert-numbers - True (default) if text that looks like
+ numeric data should be converted to JSON numbers, false if
+ they should be captured as strings.
+Results
+ match_index The match iteration. This value will
+ increase each time a new match is found in the input
+ string.
+ content The captured values from the string.
+See Also
+ anonymize(), char(), charindex(), decode(), encode(), endswith(),
+ extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
+ humanize_duration(), humanize_file_size(), instr(), leftstr(),
+ length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
+ parse_url(), printf(), proper(), regexp_capture(), regexp_match(),
+ regexp_replace(), replace(), replicate(), reverse(), rightstr(),
+ rtrim(), sparkline(), spooky_hash(), startswith(), strfilter(),
+ substr(), trim(), unicode(), unparse_url(), upper(), xpath()
+Example
+#1 To extract the key/value pairs 'a'/1 and 'b'/2 from the string 'a=1; b=2':
+ ;SELECT * FROM regexp_capture_into_json('a=1; b=2', '(\w+)=(\d+)')
+
+
+
+regexp_match(re, str)
+══════════════════════════════════════════════════════════════════════
+ Match a string against a regular expression and return the capture
+ groups as JSON.
+Parameters
+ re The regular expression to use
+ str The string to test against the regular expression
+See Also
+ anonymize(), char(), charindex(), decode(), encode(), endswith(),
+ extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
+ humanize_duration(), humanize_file_size(), instr(), leftstr(),
+ length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
+ parse_url(), printf(), proper(), regexp_capture(),
+ regexp_capture_into_json(), regexp_replace(), regexp_replace(),
+ replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(),
+ spooky_hash(), startswith(), strfilter(), substr(), trim(), unicode(),
+ unparse_url(), upper(), xpath()
+Examples
+#1 To capture the digits from the string '123':
+ ;SELECT regexp_match('(\d+)', '123') 
+
+
+#2 To capture a number and word into a JSON object with the properties 'col_0' and
+ 'col_1':
+ ;SELECT regexp_match('(\d+) (\w+)', '123 four') 
+
+
+#3 To capture a number and word into a JSON object with the named properties 'num' and
+ 'str':
+ ;SELECT regexp_match('(?<num>\d+) (?<str>\w+)', '123 four')
+
+
+
+regexp_replace(str, re, repl)
+══════════════════════════════════════════════════════════════════════
+ Replace the parts of a string that match a regular expression.
+Parameters
+ str The string to perform replacements on
+ re The regular expression to match
+ repl The replacement string. You can reference capture
+ groups with a backslash followed by the number of the group,
+ starting with 1.
+See Also
+ anonymize(), char(), charindex(), decode(), encode(), endswith(),
+ extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
+ humanize_duration(), humanize_file_size(), instr(), leftstr(),
+ length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
+ parse_url(), printf(), proper(), regexp_capture(),
+ regexp_capture_into_json(), regexp_match(), regexp_match(), replace(),
+ replicate(), reverse(), rightstr(), rtrim(), sparkline(),
+ spooky_hash(), startswith(), strfilter(), substr(), trim(), unicode(),
+ unparse_url(), upper(), xpath()
+Examples
+#1 To replace the word at the start of the string 'Hello, World!' with 'Goodbye':
+ ;SELECT regexp_replace('Hello, World!', '^(\w+)', 'Goodbye')
+
+
+#2 To wrap alphanumeric words with angle brackets:
+ ;SELECT regexp_replace('123 abc', '(\w+)', '<\1>') 
+
+
+
+replace(str, old, replacement)
+══════════════════════════════════════════════════════════════════════
+ Returns a string formed by substituting the replacement string for
+ every occurrence of the old string in the given string.
+Parameters
+ str The string to perform substitutions on.
+ old The string to be replaced.
+ replacement The string to replace any occurrences of
+ the old string with.
+See Also
+ anonymize(), char(), charindex(), decode(), encode(), endswith(),
+ extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
+ humanize_duration(), humanize_file_size(), instr(), leftstr(),
+ length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
+ parse_url(), printf(), proper(), regexp_capture(),
+ regexp_capture_into_json(), regexp_match(), regexp_replace(),
+ replicate(), reverse(), rightstr(), rtrim(), sparkline(),
+ spooky_hash(), startswith(), strfilter(), substr(), trim(), unicode(),
+ unparse_url(), upper(), xpath()
+Examples
+#1 To replace the string 'x' with 'z' in 'abc':
+ ;SELECT replace('abc', 'x', 'z') 
+
+
+#2 To replace the string 'a' with 'z' in 'abc':
+ ;SELECT replace('abc', 'a', 'z') 
+
+
+
+replicate(str, N)
+══════════════════════════════════════════════════════════════════════
+ Returns the given string concatenated N times.
+Parameters
+ str The string to replicate.
+ N The number of times to replicate the string.
+See Also
+ anonymize(), char(), charindex(), decode(), encode(), endswith(),
+ extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
+ humanize_duration(), humanize_file_size(), instr(), leftstr(),
+ length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
+ parse_url(), printf(), proper(), regexp_capture(),
+ regexp_capture_into_json(), regexp_match(), regexp_replace(),
+ replace(), reverse(), rightstr(), rtrim(), sparkline(), spooky_hash(),
+ startswith(), strfilter(), substr(), trim(), unicode(), unparse_url(),
+ upper(), xpath()
+Example
+#1 To repeat the string 'abc' three times:
+ ;SELECT replicate('abc', 3) 
+
+
+
+reverse(str)
+══════════════════════════════════════════════════════════════════════
+ Returns the reverse of the given string.
+Parameter
+ str The string to reverse.
+See Also
+ anonymize(), char(), charindex(), decode(), encode(), endswith(),
+ extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
+ humanize_duration(), humanize_file_size(), instr(), leftstr(),
+ length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
+ parse_url(), printf(), proper(), regexp_capture(),
+ regexp_capture_into_json(), regexp_match(), regexp_replace(),
+ replace(), replicate(), rightstr(), rtrim(), sparkline(),
+ spooky_hash(), startswith(), strfilter(), substr(), trim(), unicode(),
+ unparse_url(), upper(), xpath()
+Example
+#1 To reverse the string 'abc':
+ ;SELECT reverse('abc') 
+
+
+
+rightstr(str, N)
+══════════════════════════════════════════════════════════════════════
+ Returns the N rightmost (UTF-8) characters in the given string.
+Parameters
+ str The string to return subset.
+ N The number of characters from the right side of the
+ string to return.
+See Also
+ anonymize(), char(), charindex(), decode(), encode(), endswith(),
+ extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
+ humanize_duration(), humanize_file_size(), instr(), leftstr(),
+ length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
+ parse_url(), printf(), proper(), regexp_capture(),
+ regexp_capture_into_json(), regexp_match(), regexp_replace(),
+ replace(), replicate(), reverse(), rtrim(), sparkline(), spooky_hash(),
+ startswith(), strfilter(), substr(), trim(), unicode(), unparse_url(),
+ upper(), xpath()
+Examples
+#1 To get the last character of the string 'abc':
+ ;SELECT rightstr('abc', 1) 
+
+
+#2 To get the last ten characters of a string, regardless of size:
+ ;SELECT rightstr('abc', 10) 
+
+
+
+round(num, [digits])
+══════════════════════════════════════════════════════════════════════
+ Returns a floating-point value rounded to the given number of digits
+ to the right of the decimal point.
+Parameters
+ num The value to round.
+ digits The number of digits to the right of the decimal
+ to round to.
+See Also
+ abs(), acos(), acosh(), asin(), asinh(), atan(), atan2(), atanh(),
+ atn2(), avg(), ceil(), degrees(), exp(), floor(), log(), log10(),
+ max(), min(), pi(), power(), radians(), sign(), square(), sum(),
+ total()
+Examples
+#1 To round the number 123.456 to an integer:
+ ;SELECT round(123.456) 
+
+
+#2 To round the number 123.456 to a precision of 1:
+ ;SELECT round(123.456, 1) 
+
+
+#3 To round the number 123.456 to a precision of 5:
+ ;SELECT round(123.456, 5) 
+
+
+
+row_number()
+══════════════════════════════════════════════════════════════════════
+ Returns the number of the row within the current partition, starting
+ from 1.
+See Also
+ cume_dist(), dense_rank(), first_value(), lag(), last_value(), lead(),
+ nth_value(), ntile(), percent_rank(), rank()
+Example
+#1 To number messages from a process:
+ ;SELECT row_number() OVER (PARTITION BY ex_procname ORDER BY log_line) AS msg_num,
+  ex_procname, log_body FROM lnav_example_log
+
+
+
+rtrim(str, [chars])
+══════════════════════════════════════════════════════════════════════
+ Returns a string formed by removing any and all characters that
+ appear in the second argument from the right side of the first.
+Parameters
+ str The string to trim characters from the right side
+ chars The characters to trim. Defaults to spaces.
+See Also
+ anonymize(), char(), charindex(), decode(), encode(), endswith(),
+ extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
+ humanize_duration(), humanize_file_size(), instr(), leftstr(),
+ length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
+ parse_url(), printf(), proper(), regexp_capture(),
+ regexp_capture_into_json(), regexp_match(), regexp_replace(),
+ replace(), replicate(), reverse(), rightstr(), sparkline(),
+ spooky_hash(), startswith(), strfilter(), substr(), trim(), unicode(),
+ unparse_url(), upper(), xpath()
+Examples
+#1 To trim the space characters from the end of the string 'abc ':
+ ;SELECT rtrim('abc ') 
+
+
+#2 To trim the characters 'b' and 'c' from the string 'abbbbcccc':
+ ;SELECT rtrim('abbbbcccc', 'bc') 
+
+
+
+sign(num)
+══════════════════════════════════════════════════════════════════════
+ Returns the sign of the given number as -1, 0, or 1
+Parameter
+ num The number
+See Also
+ abs(), acos(), acosh(), asin(), asinh(), atan(), atan2(), atanh(),
+ atn2(), avg(), ceil(), degrees(), exp(), floor(), log(), log10(),
+ max(), min(), pi(), power(), radians(), round(), square(), sum(),
+ total()
+Examples
+#1 To get the sign of 10:
+ ;SELECT sign(10) 
+
+
+#2 To get the sign of 0:
+ ;SELECT sign(0) 
+
+
+#3 To get the sign of -10:
+ ;SELECT sign(-10) 
+
+
+
+sparkline(value, [upper])
+══════════════════════════════════════════════════════════════════════
+ Function used to generate a sparkline bar chart. The non-aggregate
+ version converts a single numeric value on a range to a bar chart
+ character. The aggregate version returns a string with a bar
+ character for every numeric input
+Parameters
+ value The numeric value to convert
+ upper The upper bound of the numeric range. The
+ non-aggregate version defaults to 100. The aggregate
+ version uses the largest value in the inputs.
+See Also
+ anonymize(), char(), charindex(), decode(), encode(), endswith(),
+ extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
+ humanize_duration(), humanize_file_size(), instr(), leftstr(),
+ length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
+ parse_url(), printf(), proper(), regexp_capture(),
+ regexp_capture_into_json(), regexp_match(), regexp_replace(),
+ replace(), replicate(), reverse(), rightstr(), rtrim(), spooky_hash(),
+ startswith(), strfilter(), substr(), trim(), unicode(), unparse_url(),
+ upper(), xpath()
+Examples
+#1 To get the unicode block element for the value 32 in the range of 0-128:
+ ;SELECT sparkline(32, 128) 
+
+
+#2 To chart the values in a JSON array:
+ ;SELECT sparkline(value) FROM json_each('[0, 1, 2, 3, 4, 5, 6, 7, 8]')
+
+
+
+spooky_hash(str, ...)
+══════════════════════════════════════════════════════════════════════
+ Compute the hash value for the given arguments.
+Parameter
+ str The string to hash
+See Also
+ anonymize(), char(), charindex(), decode(), encode(), endswith(),
+ extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
+ humanize_duration(), humanize_file_size(), instr(), leftstr(),
+ length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
+ parse_url(), printf(), proper(), regexp_capture(),
+ regexp_capture_into_json(), regexp_match(), regexp_replace(),
+ replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(),
+ startswith(), strfilter(), substr(), trim(), unicode(), unparse_url(),
+ upper(), xpath()
+Examples
+#1 To produce a hash for the string 'Hello, World!':
+ ;SELECT spooky_hash('Hello, World!') 
+
+
+#2 To produce a hash for the parameters where one is NULL:
+ ;SELECT spooky_hash('Hello, World!', NULL) 
+
+
+#3 To produce a hash for the parameters where one is an empty string:
+ ;SELECT spooky_hash('Hello, World!', '') 
+
+
+#4 To produce a hash for the parameters where one is a number:
+ ;SELECT spooky_hash('Hello, World!', 123) 
+
+
+
+sqlite_compileoption_get(N)
+══════════════════════════════════════════════════════════════════════
+ Returns the N-th compile-time option used to build SQLite or NULL if
+ N is out of range.
+Parameter
+ N The option number to get
+
+
+sqlite_compileoption_used(option)
+══════════════════════════════════════════════════════════════════════
+ Returns true (1) or false (0) depending on whether or not that
+ compile-time option was used during the build.
+Parameter
+ option The name of the compile-time option.
+
+Example
+#1 To check if the SQLite library was compiled with ENABLE_FTS3:
+ ;SELECT sqlite_compileoption_used('ENABLE_FTS3') 
+
+
+
+sqlite_source_id()
+══════════════════════════════════════════════════════════════════════
+ Returns a string that identifies the specific version of the source
+ code that was used to build the SQLite library.
+
+
+sqlite_version()
+══════════════════════════════════════════════════════════════════════
+ Returns the version string for the SQLite library that is running.
+
+
+square(num)
+══════════════════════════════════════════════════════════════════════
+ Returns the square of the argument
+Parameter
+ num The number to square
+See Also
+ abs(), acos(), acosh(), asin(), asinh(), atan(), atan2(), atanh(),
+ atn2(), avg(), ceil(), degrees(), exp(), floor(), log(), log10(),
+ max(), min(), pi(), power(), radians(), round(), sign(), sum(),
+ total()
+Example
+#1 To get the square of two:
+ ;SELECT square(2) 
+
+
+
+startswith(str, prefix)
+══════════════════════════════════════════════════════════════════════
+ Test if a string begins with the given prefix
+Parameters
+ str The string to test
+ prefix The prefix to check in the string
+See Also
+ anonymize(), char(), charindex(), decode(), encode(), endswith(),
+ extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
+ humanize_duration(), humanize_file_size(), instr(), leftstr(),
+ length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
+ parse_url(), printf(), proper(), regexp_capture(),
+ regexp_capture_into_json(), regexp_match(), regexp_replace(),
+ replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(),
+ spooky_hash(), strfilter(), substr(), trim(), unicode(), unparse_url(),
+ upper(), xpath()
+Examples
+#1 To test if the string 'foobar' starts with 'foo':
+ ;SELECT startswith('foobar', 'foo') 
+
+
+#2 To test if the string 'foobar' starts with 'bar':
+ ;SELECT startswith('foobar', 'bar') 
+
+
+
+strfilter(source, include)
+══════════════════════════════════════════════════════════════════════
+ Returns the source string with only the characters given in the
+ second parameter
+Parameters
+ source The string to filter
+ include The characters to include in the result
+See Also
+ anonymize(), char(), charindex(), decode(), encode(), endswith(),
+ extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
+ humanize_duration(), humanize_file_size(), instr(), leftstr(),
+ length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
+ parse_url(), printf(), proper(), regexp_capture(),
+ regexp_capture_into_json(), regexp_match(), regexp_replace(),
+ replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(),
+ spooky_hash(), startswith(), substr(), trim(), unicode(),
+ unparse_url(), upper(), xpath()
+Example
+#1 To get the 'b', 'c', and 'd' characters from the string 'abcabc':
+ ;SELECT strfilter('abcabc', 'bcd') 
+
+
+
+strftime(format, timestring, modifier, ...)
+══════════════════════════════════════════════════════════════════════
+ Returns the date formatted according to the format string specified
+ as the first argument.
+Parameters
+ format A format string with substitutions similar
+ to those found in the strftime() standard C library.
+ timestring The string to convert to a date with time.
+ modifier A transformation that is applied to the
+ value to the left.
+See Also
+ date(), datetime(), humanize_duration(), julianday(), time(),
+ timediff(), timeslice()
+Examples
+#1 To get the year from the timestamp '2017-01-02T03:04:05':
+ ;SELECT strftime('%Y', '2017-01-02T03:04:05') 
+
+
+#2 To create a string with the time from the timestamp '2017-01-02T03:04:05' plus one
+ minute:
+ ;SELECT strftime('The time is: %H:%M:%S', '2017-01-02T03:04:05', '+1 minute')
+
+
+#3 To create a string with the Julian day from the epoch timestamp 1491341842:
+ ;SELECT strftime('Julian day: %J', 1491341842, 'unixepoch')
+
+
+
+substr(str, start, [size])
+══════════════════════════════════════════════════════════════════════
+ Returns a substring of input string X that begins with the Y-th
+ character and which is Z characters long.
+Parameters
+ str The string to extract a substring from.
+ start The index within 'str' that is the start of the
+ substring. Indexes begin at 1. A negative value means that
+ the substring is found by counting from the right rather
+ than the left.
+ size The size of the substring. If not given, then all
+ characters through the end of the string are returned. If
+ the value is negative, then the characters before the start
+ are returned.
+See Also
+ anonymize(), char(), charindex(), decode(), encode(), endswith(),
+ extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
+ humanize_duration(), humanize_file_size(), instr(), leftstr(),
+ length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
+ parse_url(), printf(), proper(), regexp_capture(),
+ regexp_capture_into_json(), regexp_match(), regexp_replace(),
+ replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(),
+ spooky_hash(), startswith(), strfilter(), trim(), unicode(),
+ unparse_url(), upper(), xpath()
+Examples
+#1 To get the substring starting at the second character until the end of the string
+ 'abc':
+ ;SELECT substr('abc', 2) 
+
+
+#2 To get the substring of size one starting at the second character of the string
+ 'abc':
+ ;SELECT substr('abc', 2, 1) 
+
+
+#3 To get the substring starting at the last character until the end of the string
+ 'abc':
+ ;SELECT substr('abc', -1) 
+
+
+#4 To get the substring starting at the last character and going backwards one step of
+ the string 'abc':
+ ;SELECT substr('abc', -1, -1) 
+
+
+
+sum(X)
+══════════════════════════════════════════════════════════════════════
+ Returns the sum of the values in the group as an integer.
+Parameter
+ X The values to add.
+See Also
+ abs(), acos(), acosh(), asin(), asinh(), atan(), atan2(), atanh(),
+ atn2(), avg(), ceil(), degrees(), exp(), floor(), log(), log10(),
+ max(), min(), pi(), power(), radians(), round(), sign(), square(),
+ total()
+Example
+#1 To sum all of the values in the column 'ex_duration' from the table
+ 'lnav_example_log':
+ ;SELECT sum(ex_duration) FROM lnav_example_log 
+
+
+
+time(timestring, modifier, ...)
+══════════════════════════════════════════════════════════════════════
+ Returns the time in this format: HH:MM:SS.
+Parameters
+ timestring The string to convert to a time.
+ modifier A transformation that is applied to the
+ value to the left.
+See Also
+ date(), datetime(), humanize_duration(), julianday(), strftime(),
+ timediff(), timeslice()
+Examples
+#1 To get the time portion of the timestamp '2017-01-02T03:04:05':
+ ;SELECT time('2017-01-02T03:04:05') 
+
+
+#2 To get the time portion of the timestamp '2017-01-02T03:04:05' plus one minute:
+ ;SELECT time('2017-01-02T03:04:05', '+1 minute') 
+
+
+#3 To get the time portion of the epoch timestamp 1491341842:
+ ;SELECT time(1491341842, 'unixepoch') 
+
+
+
+timediff(time1, time2)
+══════════════════════════════════════════════════════════════════════
+ Compute the difference between two timestamps in seconds
+Parameters
+ time1 The first timestamp
+ time2 The timestamp to subtract from the first
+See Also
+ date(), datetime(), humanize_duration(), julianday(), strftime(),
+ time(), timeslice()
+Examples
+#1 To get the difference between two timestamps:
+ ;SELECT timediff('2017-02-03T04:05:06', '2017-02-03T04:05:00')
+
+
+#2 To get the difference between relative timestamps:
+ ;SELECT timediff('today', 'yesterday') 
+
+
+
+timeslice(time, slice)
+══════════════════════════════════════════════════════════════════════
+ Return the start of the slice of time that the given timestamp falls
+ in. If the time falls outside of the slice, NULL is returned.
+Parameters
+ time The timestamp to get the time slice for.
+ slice The size of the time slices
+See Also
+ date(), datetime(), humanize_duration(), julianday(), strftime(),
+ time(), timediff()
+Examples
+#1 To get the timestamp rounded down to the start of the ten minute slice:
+ ;SELECT timeslice('2017-01-01T05:05:00', '10m') 
+
+
+#2 To group log messages into five minute buckets and count them:
+ ;SELECT timeslice(log_time_msecs, '5m') AS slice, count(1)
+   FROM lnav_example_log GROUP BY slice
+
+
+#3 To group log messages by those before 4:30am and after:
+ ;SELECT timeslice(log_time_msecs, 'before 4:30am') AS slice, count(1) FROM
+  lnav_example_log GROUP BY slice
+
+
+
+total(X)
+══════════════════════════════════════════════════════════════════════
+ Returns the sum of the values in the group as a floating-point.
+Parameter
+ X The values to add.
+See Also
+ abs(), acos(), acosh(), asin(), asinh(), atan(), atan2(), atanh(),
+ atn2(), avg(), ceil(), degrees(), exp(), floor(), log(), log10(),
+ max(), min(), pi(), power(), radians(), round(), sign(), square(),
+ sum()
+Example
+#1 To total all of the values in the column 'ex_duration' from the table
+ 'lnav_example_log':
+ ;SELECT total(ex_duration) FROM lnav_example_log 
+
+
+
+total_changes()
+══════════════════════════════════════════════════════════════════════
+ Returns the number of row changes caused by INSERT, UPDATE or DELETE
+ statements since the current database connection was opened.
+
+
+trim(str, [chars])
+══════════════════════════════════════════════════════════════════════
+ Returns a string formed by removing any and all characters that
+ appear in the second argument from the left and right sides of the
+ first.
+Parameters
+ str The string to trim characters from the left and
+ right sides.
+ chars The characters to trim. Defaults to spaces.
+See Also
+ anonymize(), char(), charindex(), decode(), encode(), endswith(),
+ extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
+ humanize_duration(), humanize_file_size(), instr(), leftstr(),
+ length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
+ parse_url(), printf(), proper(), regexp_capture(),
+ regexp_capture_into_json(), regexp_match(), regexp_replace(),
+ replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(),
+ spooky_hash(), startswith(), strfilter(), substr(), unicode(),
+ unparse_url(), upper(), xpath()
+Examples
+#1 To trim spaces from the start and end of the string ' abc ':
+ ;SELECT trim(' abc ') 
+
+
+#2 To trim the characters '-' and '+' from the string '-+abc+-':
+ ;SELECT trim('-+abc+-', '-+') 
+
+
+
+typeof(X)
+══════════════════════════════════════════════════════════════════════
+ Returns a string that indicates the datatype of the expression X:
+ "null", "integer", "real", "text", or "blob".
+Parameter
+ X The expression to check.
+
+Examples
+#1 To get the type of the number 1:
+ ;SELECT typeof(1) 
+
+
+#2 To get the type of the string 'abc':
+ ;SELECT typeof('abc') 
+
+
+
+unicode(X)
+══════════════════════════════════════════════════════════════════════
+ Returns the numeric unicode code point corresponding to the first
+ character of the string X.
+Parameter
+ X The string to examine.
+See Also
+ anonymize(), char(), charindex(), decode(), encode(), endswith(),
+ extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
+ humanize_duration(), humanize_file_size(), instr(), leftstr(),
+ length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
+ parse_url(), printf(), proper(), regexp_capture(),
+ regexp_capture_into_json(), regexp_match(), regexp_replace(),
+ replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(),
+ spooky_hash(), startswith(), strfilter(), substr(), trim(),
+ unparse_url(), upper(), xpath()
+Example
+#1 To get the unicode code point for the first character of 'abc':
+ ;SELECT unicode('abc') 
+
+
+
+unlikely(value)
+══════════════════════════════════════════════════════════════════════
+ Short-hand for likelihood(X, 0.0625)
+Parameter
+ value The boolean value to return
+
+
+unparse_url(obj)
+══════════════════════════════════════════════════════════════════════
+ Convert a JSON object containing the parts of a URL into a URL
+ string
+Parameter
+ obj The JSON object containing the URL parts
+See Also
+ anonymize(), char(), charindex(), decode(), encode(), endswith(),
+ extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
+ humanize_duration(), humanize_file_size(), instr(), leftstr(),
+ length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
+ parse_url(), parse_url(), printf(), proper(), regexp_capture(),
+ regexp_capture_into_json(), regexp_match(), regexp_replace(),
+ replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(),
+ spooky_hash(), startswith(), strfilter(), substr(), trim(), unicode(),
+ upper(), xpath()
+Example
+#1 To unparse the object '{"scheme": "https", "host": "example.com"}':
+ ;SELECT unparse_url('{"scheme": "https", "host": "example.com"}')
+
+
+
+upper(str)
+══════════════════════════════════════════════════════════════════════
+ Returns a copy of the given string with all ASCII characters
+ converted to upper case.
+Parameter
+ str The string to convert.
+See Also
+ anonymize(), char(), charindex(), decode(), encode(), endswith(),
+ extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
+ humanize_duration(), humanize_file_size(), instr(), leftstr(),
+ length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
+ parse_url(), printf(), proper(), regexp_capture(),
+ regexp_capture_into_json(), regexp_match(), regexp_replace(),
+ replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(),
+ spooky_hash(), startswith(), strfilter(), substr(), trim(), unicode(),
+ unparse_url(), xpath()
+Example
+#1 To uppercase the string 'aBc':
+ ;SELECT upper('aBc') 
+
+
+
+xpath(xpath, xmldoc)
+══════════════════════════════════════════════════════════════════════
+ A table-valued function that executes an xpath expression over an
+ XML string and returns the selected values.
+Parameters
+ xpath The XPATH expression to evaluate over the XML
+ document.
+ xmldoc The XML document as a string.
+Results
+ result The result of the XPATH expression.
+ node_path The absolute path to the node containing the
+ result.
+ node_attr The node's attributes stored in JSON object.
+ node_text The node's text value.
+See Also
+ anonymize(), char(), charindex(), decode(), encode(), endswith(),
+ extract(), group_concat(), group_spooky_hash(), gunzip(), gzip(),
+ humanize_duration(), humanize_file_size(), instr(), leftstr(),
+ length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(),
+ parse_url(), printf(), proper(), regexp_capture(),
+ regexp_capture_into_json(), regexp_match(), regexp_replace(),
+ replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(),
+ spooky_hash(), startswith(), strfilter(), substr(), trim(), unicode(),
+ unparse_url(), upper()
+Examples
+#1 To select the XML nodes on the path '/abc/def':
+ ;SELECT * FROM xpath('/abc/def', '<abc><def a="b">Hello</def><def>Bye</def></abc>')
+
+
+#2 To select all 'a' attributes on the path '/abc/def':
+ ;SELECT * FROM xpath('/abc/def/@a', '<abc><def a="b">Hello</def><def>Bye</def></abc>')
+
+
+#3 To select the text nodes on the path '/abc/def':
+ ;SELECT * FROM xpath('/abc/def/text()', '<abc><def a="b">Hello &#x2605;</def></abc>')
+
+
+
+yaml_to_json(yaml)
+══════════════════════════════════════════════════════════════════════
+ Convert a YAML document to a JSON-encoded string
+Parameter
+ yaml The YAML value to convert to JSON.
+See Also
+ jget(), json_concat(), json_contains(), json_group_array(),
+ json_group_object()
+Example
+#1 To convert the document "abc: def":
+ ;SELECT yaml_to_json('abc: def') 
+
+
+
+zeroblob(N)
+══════════════════════════════════════════════════════════════════════
+ Returns a BLOB consisting of N bytes of 0x00.
+Parameter
+ N The size of the BLOB.
+
+
+ATTACH DATABASE filename AS schema-name
+══════════════════════════════════════════════════════════════════════
+ Attach a database file to the current connection.
+Parameters
+ filename The path to the database file.
+ schema-name The prefix for tables in this database.
+
+Example
+#1 To attach the database file '/tmp/customers.db' with the name customers:
+ ;ATTACH DATABASE '/tmp/customers.db' AS customers 
+
+
+
+CASE [base-expr] WHEN cmp-expr1 THEN then-expr1 [... WHEN cmp-exprN THEN then-exprN] [ELSE else-expr] END
+══════════════════════════════════════════════════════════════════════
+ Evaluate a series of expressions in order until one evaluates to
+ true and then return it's result. Similar to an IF-THEN-ELSE
+ construct in other languages.
+Parameters
+ base-expr The base expression that is used for
+ comparison in the branches
+ cmp-expr The expression to test if this branch should
+ be taken
+ else-expr The result of this CASE if no branches
+ matched.
+
+Example
+#1 To evaluate the number one and return the string 'one':
+ ;SELECT CASE 1 WHEN 0 THEN 'zero' WHEN 1 THEN 'one' END
+
+
+
+CREATE [TEMP] VIEW [IF NOT EXISTS] [schema-name.] view-name AS select-stmt
+══════════════════════════════════════════════════════════════════════
+ Assign a name to a SELECT statement
+Parameters
+ IF NOT EXISTS Do not create the view if it already
+ exists
+ schema-name. The database to create the view in
+ view-name The name of the view
+ select-stmt The SELECT statement the view
+ represents
+
+
+DELETE FROM table-name [WHERE cond]
+══════════════════════════════════════════════════════════════════════
+ Delete rows from a table
+Parameters
+ table-name The name of the table
+ cond The conditions used to delete the rows.
+
+
+DETACH DATABASE schema-name
+══════════════════════════════════════════════════════════════════════
+ Detach a database from the current connection.
+Parameter
+ schema-name The prefix for tables in this database.
+
+Example
+#1 To detach the database named 'customers':
+ ;DETACH DATABASE customers 
+
+
+
+DROP VIEW [IF EXISTS] [schema-name.] view-name
+══════════════════════════════════════════════════════════════════════
+ Drop a view
+Parameters
+
+
+INSERT INTO [schema-name.] table-name [( column-name1 [, ... column-nameN] )] VALUES ( expr1 [, ... exprN] )
+══════════════════════════════════════════════════════════════════════
+ Insert rows into a table
+Parameters
+
+Example
+#1 To insert the pair containing 'MSG' and 'HELLO, WORLD!' into the
+ 'environ' table:
+ ;INSERT INTO environ VALUES ('MSG', 'HELLO, WORLD!')
+
+
+
+OVER window-name
+══════════════════════════════════════════════════════════════════════
+ Executes the preceding function over a window
+Parameter
+ window-name The name of the window definition
+
+
+SELECT result-column1 [, ... result-columnN] [FROM table1 [, ... tableN]] [WHERE cond] [GROUP BY grouping-expr1 [, ... grouping-exprN]] [ORDER BY ordering-term1 [, ... ordering-termN]] [LIMIT limit-expr1 [, ... limit-exprN]]
+══════════════════════════════════════════════════════════════════════
+ Query the database and return zero or more rows of data.
+Parameters
+ result-column The expression used to generate a
+ result for this column.
+ table The table(s) to query for data
+ cond The conditions used to select the
+ rows to return.
+ grouping-expr The expression to use when grouping
+ rows.
+ ordering-term The values to use when ordering the
+ result set.
+ limit-expr The maximum number of rows to
+ return.
+
+Example
+#1 To select all of the columns from the table 'syslog_log':
+ ;SELECT * FROM syslog_log 
+
+
+
+UPDATE table SET column-name1 = expr1 [, ... column-nameN = exprN] [WHERE cond]
+══════════════════════════════════════════════════════════════════════
+ Modify a subset of values in zero or more rows of the given table
+Parameters
+ table The table to update
+ column-name The columns in the table to update.
+ cond The condition used to determine whether
+ a row should be updated.
+
+Example
+#1 To mark the syslog message at line 40:
+ ;UPDATE syslog_log SET log_mark = 1 WHERE log_line = 40
+
+
+
+WITH [RECURSIVE] cte-table-name AS select-stmt
+══════════════════════════════════════════════════════════════════════
+ Create a temporary view that exists only for the duration of a SQL
+ statement.
+Parameters
+ cte-table-name The name for the temporary table.
+ select-stmt The SELECT statement used to
+ populate the temporary table.
+