~strahinja/table

Command line utility to format and display CSV
config.mk: Add -DNDEBUG
Add table-specific exit status codes; table.c: Sort functions, add 
table.1.in: Workaround buggy implementations of mdoc in mandb

refs

master
browse  log 
v0.7.18
release notes 

clone

read-only
https://git.sr.ht/~strahinja/table
read/write
git@git.sr.ht:~strahinja/table

You can also use your local clone with git send-email.

table
=====

Command line utility to format and display CSV and TSV.

For installation instructions, see the file INSTALL.


Examples
--------

Periodically display CPU load information in a single-line table (requires a
mounted Linux-style /proc file system and GNU watch(1))

	$ watch "table /proc/loadavg -d ' ' -c 50 -n -s ss"

Format a long list of files in the current directory in a double line table with
single-line column divisors

	$ LC_ALL=C ls -l | tail -n +2 | sed -E 's/ +/ /g' | table -d ' ' -n

Caution: format of ls(1) is not standardized, so this example might not work as
intended.

Print information from /etc/passwd in a table:

	$ table -n -d : -f 3:1:1:1:4:4:4 /etc/passwd

Same as above, without borders and with different column alignment:

	$ table -n -H -d: -arccclll -see -f3:1:1:1:4:4:4 /etc/passwd



Configuring GNU Midnight Commander (mc)
---------------------------------------

GNU Midnight Commander[2] file manager can be configured to use table as a
viewer (F3) for CSV files. To do that, edit /usr/lib/mc/ext.d/text.sh (or make
and edit a local copy, for example in ~/bin/text.sh, which we will assume here)
so that

	case "${filetype}" in

block in do_view_action() function includes:

	csv)
	    table -m -n "${MC_EXT_FILENAME}"
	    ;;

You also need to edit extension file (Command->Edit extension file) or just edit
~/.config/mc/mc.ext and add the lines:

	shell/.csv
	    View=%view{ascii} ~/bin/text.sh view csv %var{PAGER:more}

before includes and default target.

Bonus – TSV viewer: include

	tsv)
	    tsvtable -m -n "${MC_EXT_FILENAME}"
	    ;;

in ~/bin/text.sh and

	shell/.tsv
	    View=%view{ascii} ~/bin/text.sh view tsv %var{PAGER:more}

in ~/.config/mc/mc.ext.


Configuring ranger file manager
-------------------------------

Ranger[3] file manager can be configured to use table as a CSV file viewer.  To
do that, add the following to ~/.config/ranger/scope.sh, within the function
handle_extension():

	## CSV
	csv)
	    table -m "${FILE_PATH}" && exit 5
	    exit 1;;

Bonus – TSV viewer:

	## TSV
	tsv)
	    tsvtable -m "${FILE_PATH}" && exit 5
	    exit 1;;


Configuring vifm
----------------

Vifm[4] file manager can also be configured to use table as a CSV file viewer.
To accomplish this, add the following lines to ~/.config/vifm/vifmrc:

	" CSV
	fileviewer *.csv
		\ table -m %c

Bonus – TSV viewer:

	" TSV
	fileviewer *.tsv
		\ tsvtable -m %c


[1]: https://github.com/apenwarr/redo
[2]: https://www.midnight-commander.org
[3]: https://github.com/ranger/ranger
[4]: https://vifm.info


License
-------

table - Command line utility to format and display CSV
Copyright (C) 2020-2024  Страхиња Радић

This program is free software: you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation, either version 3 of the License, or (at your option) any later
version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with
this program. If not, see <https://www.gnu.org/licenses/>.