[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.