coreutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: New coreutil suggestion - tableize


From: Pádraig Brady
Subject: Re: New coreutil suggestion - tableize
Date: Sat, 26 Nov 2011 16:27:38 +0000
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:6.0) Gecko/20110816 Thunderbird/6.0

On 11/26/2011 01:23 PM, Guillaume Kielwasser wrote:
> tableize is a small text utility that prints a table
> from a formatted file or standard input. Example:
> 
> $ cut -d':' -f1,3-6 /etc/passwd | head | tableize -sd':'
> +--------+---+-------+--------+-----------------+
> | root   | 0 |     0 | root   | /root           |
> | daemon | 1 |     1 | daemon | /usr/sbin       |
> | bin    | 2 |     2 | bin    | /bin            |
> | sys    | 3 |     3 | sys    | /dev            |
> | sync   | 4 | 65534 | sync   | /bin            |
> | games  | 5 |    60 | games  | /usr/games      |
> | man    | 6 |    12 | man    | /var/cache/man  |
> | lp     | 7 |     7 | lp     | /var/spool/lpd  |
> | mail   | 8 |     8 | mail   | /var/mail       |
> | news   | 9 |     9 | news   | /var/spool/news |
> +--------+---+-------+--------+-----------------+
> 
> Package home page for now:
> http://www.gnuwakes.org/index.php?option=com_content&view=article&id=54:tab-09-released&catid=36:tab&Itemid=58
> 
> During tableize's GNU evaluation, it appeared that the coreutils could be
> the right place to be for this tool, even if it's not ready for a
> coreutils' integration right now.
> 
> Looking for feedback, comments, experience, tableize is still in development
> and nothing's written in the stone yet (options, program name, etc.).
> 
> Any input appreciated.

Thanks Guillaume,

That does seem useful, though similar logic exists already:

$ head /etc/passwd | column -t -s:
root      x  0   0   root      /root            /bin/bash
bin       x  1   1   bin       /bin             /sbin/nologin
daemon    x  2   2   daemon    /sbin            /sbin/nologin
adm       x  3   4   adm       /var/adm         /sbin/nologin
lp        x  4   7   lp        /var/spool/lpd   /sbin/nologin
sync      x  5   0   sync      /sbin            /bin/sync
shutdown  x  6   0   shutdown  /sbin            /sbin/shutdown
halt      x  7   0   halt      /sbin            /sbin/halt
mail      x  8   12  mail      /var/spool/mail  /sbin/nologin
uucp      x  10  14  uucp      /var/spool/uucp  /sbin/nologin

$ python -m prettytable
+-----------+------+------------+-----------------+
| City name | Area | Population | Annual Rainfall |
+-----------+------+------------+-----------------+
| Adelaide  | 1295 |  1158259   |      600.5      |
| Brisbane  | 5905 |  1857594   |      1146.4     |
| Darwin    | 112  |   120900   |      1714.7     |
| Hobart    | 1357 |   205556   |      619.5      |
| Sydney    | 2058 |  4336374   |      1214.8     |
| Melbourne | 1566 |  3806092   |      646.9      |
| Perth     | 5386 |  1554769   |      869.4      |
+-----------+------+------------+-----------------+

Hmm, I wonder would it be worth augmenting `column -t` from util-linux
to add a --border option and also detect number cols and auto right align?
I guess a --header option would be useful too.
Note `column` is not specific to GNU/Linux of course, so perhaps
in time it may be moved to coreutils.
Note both util-linux and coreutils use a multi-byte aware alignment module¹,
which may be useful, which you can see with the output from:

$ df -B\'1 | head -n3 #²
Filesystem           1B-blocks           Used     Available Use% Mounted on
rootfs          13,416,660,992  8,771,010,560 4,509,388,800  67% /
udev             1,489,645,568              0 1,489,645,568   0% /dev

$ LANG=lt_LT.utf8 cal -3
     spalio 2011         lapkričio 2011         gruodžio 2011
Sk Pr An Tr Kt Pn Št  Sk Pr An Tr Kt Pn Št  Sk Pr An Tr Kt Pn Št
                   1         1  2  3  4  5               1  2  3
 2  3  4  5  6  7  8   6  7  8  9 10 11 12   4  5  6  7  8  9 10
 9 10 11 12 13 14 15  13 14 15 16 17 18 19  11 12 13 14 15 16 17
16 17 18 19 20 21 22  20 21 22 23 24 25 26  18 19 20 21 22 23 24
23 24 25 26 27 28 29  27 28 29 30           25 26 27 28 29 30 31
30 31

¹ 
http://git.savannah.gnu.org/gitweb/?p=coreutils.git;a=blob;f=gl/lib/mbsalign.h;hb=HEAD
² Since coreutils 8.11

I also notice there is logic to consume such tables.
This also notes other possible formatting options.
http://cxc.harvard.edu/contrib/asciitable/

cheers,
Pádraig.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]