##bash, sed and coreutils, 95 89 bytes
bash, sed and coreutils, 95 89 bytes
You can define a function like this
f(){ n=$[$1-2];yes \ |sed $[$2*n]q|tr -d \\n|fold -w$n|sed 's/^\|$/|/g;1!{$!b};s/ /-/g';} Or in a more readable format:
f() { n=$(($1-2)) # The next couple of lines create a rectangle of spaces # matching the desired size yes ' ' | head -n$(($2*n)) | tr -d '\n' | fold -w$n | # Add the pipes and dashes sed ' s/^\|$/|/g # Replace first and last character by a pipe 1! {$!b } # Do nothing if not on first or last line s/ /-/g # Add the dashes ' echo } You can now say f 4 3:
|--| | | |--| If you care about trailing new-line, add an echo at the end of function.