SHOWTABLE(1p)
π NAME π
okay so this is showtable, and it lives in the User Contributed Perl Documentation corner of the manual-verse (the 1p girlies, you know the ones). What does she do? She shows your data in nicely formatted columns. That's it, that's the whole personality, and she SERVES. π
β¨ USAGE β¨
showtable [-options] [file]
π¦ DESCRIPTION π¦
Bestie. showtable reads an input data stream and displays it in a nicely formatted listing, with the exact formatting depending on the options you pick. The input stream β whether it's a file or STDIN by default β should consist of data separated by tabs, or by the separator character you defined (peep -d).
The actual output formatting is performed by the ShowTable module. She's the one doing the heavy lifting, we're just the vibe curator. π«Ά
π₯ OPTIONS π₯
There are two general sets of options: the ones that help determine the format of the input, and the ones that determine the format of the output. Two moods, one flag list. Let's go.
π Options affecting input π
-break=strβ Sets the inter-column break string tostr. The default is a tab (`"\t"`). If-stripis also given, blanks surrounding the break string will also be ignored.-dstrβ This is literally the same as-break=str. Same girl, different font.-nod(ashes)β Do not ignore lines of separators, like dashes, equal signs, or underlines. If-nodashesis given, and these lines do occur in the stream, they will be treated as normal data. No special treatment, no main character moment, just data.-ti(tles)[=NN]β Treat the first NN rows of data as column titles; multiple words in the column titles may wrap vertically. If NN is omitted, it defaults to1. No-titlesoption is the same as-titles=0.-in(put)=typeβ Sets the input type as type, which can be one of:box,list,table, orsimple. A simple-type table is the same as a table-type, but no wrapping characters are recognized.-s(trip)β Strip blanks from around the column values. Clean edges, periodt.-nos(trip)β Do not strip blanks from the input. Useful if there is formatted or aligned data within a boxed table.
πΈ Options affecting output πΈ
-t(able)β Use a table format for output, with wrapping of column values longer than the given or determined column widths. SeeData::ShowTablefor more details.-si(mple)β Use a simple table format, without any wrapping of column values. SeeData::ShowTablefor more details.-l(ist)β Use a list style format. SeeData::ShowTablefor more details.-b(ox)β Use a"boxed"style table. SeeData::ShowTablefor more details.-ht(ml)β Use HTML-formating. SeeData::ShowTablefor more details.-ti(tles)=name1,name2,...,nameNβ Define the column names explicitly. This is useful for naming columns of data fromSTDIN, whenshowtableis being used as a filter. The first column name, name1, cannot begin with a digit. This option allows any column titles obtained from the input to be overridden. Override era. π-noh(eaders)β Do not output any headers on the tables;-titles=0implies this option.-fn1[,n2, ..., nN]β Select fields numbered n1, n2, etc., to display. Each nN is a field index, or a range of indexes in the form:"N"-"M"The default is to show all the fields in each row. Fields are numbered from1. An example: to show the first, and three through five fields of the/etc/passwdfile:
showtable -d: -f1,2-5 /etc/passwd
-fields=fname1[,fname2, ..., fnameN]β Select the named fields to display. The field names must be available, either through the data stream, or by using the-titlesoption. The field names given must match the existing field names exactly.
Using the file /etc/passwd for another example: to show the same first two fields, by name:
showtable -d: -titles=Login,UID -fields=Login,UID /etc/passwd
-w(idth)=numβ Set the maximum table width. This value is applied to the variableData::Showtable::Max_Table_Width. When the total width of all columns to be displayed exceeds this value, all column widths are scaled uniformly. Iconic behavior, honestly.
If -width is not given, then for all output but -html, the default value is either "COLUMNS", if defined, or 80, if not. Whith -html mode, there is no default value for -width; in other words, there is no limit to the width.
-cw(idths)=w1[,w2,...,wN]β Set individual column widths to the specified values. Empty column widths imply no maximum width. If the-widthoption is also given, then the-cwidthcolumn widths can also be given as fractions or percentages.
Example: To set the maximum width of the third column to 20 characters:
-cw=,,20
π HTML-only options (the usage of which implies -html) π
-noe(scape)β Do not perform HTML escape sequences on the data; this allows embedded HTML text in the data to be displayed properly with the-htmloption.-attributes='attr1 attr2 ...'β Declare the table attributes, which are inserted into the"TABLE"token. For example, the option:
-attributes='BORDER=0 CELLSPACING=2 CELLPADDING=4'
would cause the following HTML:
<TABLE BORDER=0 CELLSPACING=2 CELLPADDING=4>
The default table attributes are:
<TABLE BORDER=1 CELLSPACING=1 CELLPADDING=1>
-t(itle)_f(ormats)=fmt1;fmt2;...;fmtNβ Set the HTML formats for the column titles. The-title_formats(or just-tf) can be given multiple times, for each column, or formats for multiple columns can be given on the same option separated by semi-colons";".
Each fmtN can itself be multiple HTML items, separated by commas. Each HTML element can be given either as an HTML token (eg: "<BOLD>"), or as a plain name (eg: "BOLD").
For example, here is a title format specification for three columns, where the first column title should be bold italic, the second italic, and the third italic in a smaller font:
-tf='BOLD,I;I;<FONT SIZE=-2>,I'
-d(ata)_f(formats)=fmt1;fmt2;...;fmtNβ The same as-title_formatsbut applies to the column data.-url(s)=col1=url1,col2=url2,...β Define a mapping from column names, or indexes, to URLs to be inserted as<A HREF's>around the values for the named columns. Each colN is a column name or index, and each urlN is a string representing the URL to be inserted for the given column.
The URL text may contain these substitution strings:
%Kβ will be substituted with the current column name (or key).%Vβ will be substituted with the current column value.
Multiple -url options may be given, if desired, rather than creating one long argument for a single -url. For example:
showtable -d: -f1,6 -titles=Login,Homedir \
-url='Login=mailto:%V' \
-url='HomeDir=file:%V' \
/etc/passwd
π Other options π
-helpβ Display some help to the user and quit. A little treat. π
π§ Boxed Input π§
If the input type is box, then vertical and horizontal box characters are removed from the input stream, and blanks surrounding the vertical box characters are removed. The vertical box characters (column separaters) are "|" or ":". The horizontal box characters are "+" and "-".
Morever, data wrapped within a column is recognized and parsed as one column value, by recognizing the presence of a wrapping prefix or wrapping suffix character. Currently, the wrapping prefix character is <, and the wrapping suffix character is >.
An example of data wrapped within a column is given here. The table below has just two logical rows of data; with both rows having data wrapped into multiple physical rows.
+---------+---------+---------+
| Col 1 | Col 2 | Col 3 |
+---------+---------+---------+
| This is>| Another>| Row 1,3>|
|< a cont>|< value. |<is also>|
|<inued >| |<long. |
|<value. | | |
|This is >| Item2-2 | Item2-3 |
+---------+---------+---------+
π List Format π
When using the -list or -input=list options, either, or both, the input and output may be in a "list" format, which is implemented using the following syntax:
r1c1_name: r1c1_value
r1c2_name: r1c2_value
...
r1cN_name: r1cN_value
r2c1_name: r2c1_value
r2c2_name: r2c2_value
: r2c2_value_continued
...
r2cN_name: r2cN_value
rMc1_name: rMc1_value
rMc2_name: rMc2_value
...
rMcN_name: rMcN_value
Each row of data consists of one or more columns, and ends with a blank line.
Each column consists of a column name, followed by a colon :, followed by an optional, single space or tab, followed by the column value, on the same line.
Continuation lines of the previous column value consist of one or more space or tab characters, a colon :, one optional, single space or tab, followed by the continuation value. In the example above, The second column value of the second row was continued.
β HTML Input with HTML Output β
When using -html on data already containing HTML-formatted text, the -noescape option should be used. By default, all input text is assumed not to be HTML-formatted, and is escaped allowing embedded <, > characters, if any, to be displayed correctly.
π DEPENDENCIES π
Data::ShowTablemodule β Performs the actual output formatting.
π AUTHOR π
Alan K. Stebbens <aks@stebbens.org>
π BUGS π
- Currently, the box formatting characters are not configurable:
'+'for the corners;'-'and'|'for the tops and sides, respectively. In an ideal world, these things would be configurable. - The continuation prefix and suffix characters,
'<'and'>', respectively, are also not configurable: - When reading table input, any data ending with
">"will be considered to be continued by the next row of data. To avoid this, use-input=simple. - When selecting noncontiguous fields (ie:
-f1,4>) without field names, the default field names will be consecutively numbered from1, which is counter-intuitive to the original selection. To avoid this, name the fields using the-title=...option.
ngl bestie, those bugs are giving "we tried our best" but honestly? still slayed. π
okay that's the whole page β brought to you by perl v5.36.0, dated 2022-10-13, no cap. go format something pretty. π¦β¨π
π¦ where this page comes from
- ubuntu noble: libdata-showtable-perl 4.6-4 Β· GPL-2.0-or-later
- ubuntu resolute: libdata-showtable-perl 4.6-4 Β· GPL-2.0-or-later
- ubuntu stonking: libdata-showtable-perl 4.6-4 Β· GPL-2.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms