#!/bin/sh format_table() { first_row="" table_lines="" while read line do first_row="$first_row$line" if test "$line" = "" then break fi done while read line do if test "$line" = "" then break fi table_lines="$table_lines $line" done printf '%s' "$first_row" | sed -E \ -e 's//|/g' \ -e 's/<\/tr>/|\n/g' \ -e 's/<\/t[hd]> */|/g' \ -e 's/<\/?t[hd]>//g' \ -e 's/^ *//g;s/ *$//g' printf '%s\n' "$first_row" | sed -E \ -e 's//|/g' \ -e 's/<\/tr>/|\n/g' \ -e 's/<\/t[hd]> */|/g' \ -e 's/<\/?t[hd]>//g' \ -e 's/[^|]/-/g' \ -e 's/^ *//g;s/ *$//g' printf '%s\n' "$table_lines" | sed -E \ -e 's//|/g' \ -e 's/<\/tr>/|\n/g' \ -e 's/<\/t[hd]> */|/g' \ -e 's/<\/?t[hd]>//g' \ -e 's/^ *//g;s/ *$//g' } sed -e 's/.*//g' \ -e 's//\1/g' \ -e '//,//d' \ -e '/^$/d' "$@" \ | \ while read line do if test "$line" = "" then format_table else printf '%s\n' "$line" fi done