#!/bin/sh fname=$(mktemp foobar.XXXXX) cat > "$fname" awk ' maxline == 1 { if (maxlength < length) maxlength = length } function printtop () { blank = "" for (i = 0; i < maxlength + 4; i++) blank = blank "*" printf("%s\n", blank) } output == 1 && FNR == 1 { printtop() printf("* %*s *\n", maxlength, "") } output == 1 { printf("* %s%*s *\n", $0, maxlength - length, "") } END { printf("* %*s *\n", maxlength, "") printtop() } ' maxline=1 "$fname" maxline=0 output=1 "$fname" rm "$fname"