#!/bin/rc # http://www.quintile.net/doorstep/columns rfork ne delim=':' fn usage { echo usage columns [-d delim] [file...] exit 'usage' } while(! ~ $#* 0 && ~ $1 -* && ! ~ $1 --){ switch($1){ case -d delim=$2 shift case -* usage } shift } if(! ~ $#* 0 && ~ $1 --) shift awk -F$delim ' { r = NR+0; for(f = 1; f <= NF; f++){ val[r,f] = $f; if(len[f] < length($f)) len[f] = length($f); } num[r] = NF; } END{ for(r = 1; r <= NR; r++){ for(f = 1; f < num[r]; f++) printf("%*.*s ", -len[f], len[f], val[r,f]); printf("%s\n", val[r,f]); } } ' $* | dd -obs 64k >[2] /dev/null