tablify man page on Fedora

Man page or keyword search:  
man Server   31170 pages
apropos Keyword Search (all sections)
Output format
Fedora logo
[printable version]

TABLIFY(1)	      User Contributed Perl Documentation	    TABLIFY(1)

NAME
       tablify - turn a delimited text file into a text table

SYNOPSIS
	 tablify [options] file

       Options:

	 -h|--help	     Show help
	 --no-headers	     Assume first line is data, not headers
	 --no-pager	     Do not use $ENV{'PAGER'} even if defined
	 --strip-quotes	     Strip " or ' around fields
	 -l|--list	     List the fields in the file (for use with -f)
	 -f|--fields=f1[,f2] Show only fields in comma-separated list;
			     when used in conjunction with "no-headers"
			     the list should be field numbers (starting at 1);
			     otherwise, should be field names
	 -w|where=f<cmp>v    Apply the "cmp" Perl operator to restrict output
			     where field "f" matches the value "v";  acceptable
			     operators include ==, eq, >, >=, <=, and =~
	 -v|--vertical	     Show records vertically
	 --limit=n	     Limit to first "n" records
	 --fs=x		     Use "x" as the field separator
			     (default is tab "\t")
	 --rs=x		     Use "x" as the record separator
			     (default is newline "\n")
	 --as-html	     Create an HTML table instead of plain text

DESCRIPTION
       This script is essentially a quick way to parse a delimited text file
       and view it as a nice ASCII table.  By selecting only certain fields,
       employing a where clause to only select records where a field matches
       some value, and using the limit to only see some of the output, you
       almost have a mini-database front-end for a simple text file.

EXAMPLES
       Given a data file like this:

	 name,rank,serial_no,is_living,age
	 George,General,190293,0,64
	 Dwight,General,908348,0,75
	 Attila,Hun,,0,56
	 Tojo,Emporor,,0,87
	 Tommy,General,998110,1,54

       To find the fields you can reference, use the list option:

	 $ tablify --fs ',' -l people.dat
	 +-----------+-----------+
	 | Field No. | Field	 |
	 +-----------+-----------+
	 | 1	     | name	 |
	 | 2	     | rank	 |
	 | 3	     | serial_no |
	 | 4	     | is_living |
	 | 5	     | age	 |
	 +-----------+-----------+

       To extract just the name and serial numbers, use the fields option:

	 $ tablify --fs ',' -f name,serial_no people.dat
	 +--------+-----------+
	 | name	  | serial_no |
	 +--------+-----------+
	 | George | 190293    |
	 | Dwight | 908348    |
	 | Attila |	      |
	 | Tojo	  |	      |
	 | Tommy  | 998110    |
	 +--------+-----------+
	 5 records returned

       To extract the first through third fields and the fifth field (where
       field numbers start at "1" -- tip: use the list option to quickly
       determine field numbers), use this syntax for fields:

	 $ tablify --fs ',' -f 1-3,5 people.dat
	 +--------+---------+-----------+------+
	 | name	  | rank    | serial_no | age  |
	 +--------+---------+-----------+------+
	 | George | General | 190293	| 64   |
	 | Dwight | General | 908348	| 75   |
	 | Attila | Hun	    |		| 56   |
	 | Tojo	  | Emporor |		| 87   |
	 | Tommy  | General | 998110	| 54   |
	 +--------+---------+-----------+------+
	 5 records returned

       To select only the ones with six serial numbers, use a where clause:

	 $ tablify --fs ',' -w 'serial_no=~/^\d{6}$/' people.dat
	 +--------+---------+-----------+-----------+------+
	 | name	  | rank    | serial_no | is_living | age  |
	 +--------+---------+-----------+-----------+------+
	 | George | General | 190293	| 0	    | 64   |
	 | Dwight | General | 908348	| 0	    | 75   |
	 | Tommy  | General | 998110	| 1	    | 54   |
	 +--------+---------+-----------+-----------+------+
	 3 records returned

       To find Dwight's record, you would do this:

	 $ tablify --fs ',' -w 'name eq "Dwight"' people.dat
	 +--------+---------+-----------+-----------+------+
	 | name	  | rank    | serial_no | is_living | age  |
	 +--------+---------+-----------+-----------+------+
	 | Dwight | General | 908348	| 0	    | 75   |
	 +--------+---------+-----------+-----------+------+
	 1 record returned

       To find the name of all the people with a serial number who are living:

	 $ tablify --fs ',' -f name -w 'is_living==1' -w 'serial_no>0' people.dat
	 +-------+
	 | name	 |
	 +-------+
	 | Tommy |
	 +-------+
	 1 record returned

       To filter outside of program and simply format the results, use "-" as
       the last argument to force reading of STDIN (and probably assume no
       headers):

	 $ grep General people.dat | tablify --fs ',' -f 1-3 --no-headers -
	 +---------+--------+--------+
	 | Field1  | Field2 | Field3 |
	 +---------+--------+--------+
	 | General | 190293 | 0	     |
	 | General | 908348 | 0	     |
	 | General | 998110 | 1	     |
	 +---------+--------+--------+
	 3 records returned

       When dealing with data lacking field names, you can specify "no-
       headers" and then refer to fields by number (starting at one), e.g.:

	 $ tail -5 people.dat | tablify --fs ',' --no-headers -w '3 eq "General"' -
	 +--------+---------+--------+--------+--------+
	 | Field1 | Field2  | Field3 | Field4 | Field5 |
	 +--------+---------+--------+--------+--------+
	 | George | General | 190293 | 0      | 64     |
	 | Dwight | General | 908348 | 0      | 75     |
	 | Tommy  | General | 998110 | 1      | 54     |
	 +--------+---------+--------+--------+--------+
	 3 records returned

       If your file has many fields which are hard to see across the screen,
       consider using the vertical display with "-v" or "--vertical", e.g.:

	 $ tablify --fs ',' -v --limit 1 people.dat
	 ************ Record 1 ************
	      name: George
	      rank: General
	 serial_no: 190293
	 is_living: 0
	      age : 64

	 1 record returned

SEE ALSO
       ·   Text::RecordParser

       ·   Text::TabularDisplay

       ·   DBD::CSV

	   Although I don't DBD::CSV this module, the idea was much the
	   inspiration for this.  I just didn't want to have to install DBI
	   and DBD::CSV to get this kind of functionality.  I think my
	   interface is simpler.

AUTHOR
       Ken Youens-Clark <kclark@cpan.org>.

LICENSE AND COPYRIGHT
       Copyright (C) 2006-10 Ken Youens-Clark.	All rights reserved.

       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; version 2.

       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.

perl v5.14.2			  2012-01-14			    TABLIFY(1)
[top]

List of man pages available for Fedora

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net