title: How can I format the output of a bash command in neat columns
body: <p>I have a function which outputs many rows of information which I want to format in columns.  The problem is that the width of any particular "cell" (if I may use that term) of data is variable, so piping it to something like awk does not give me what I want.  </p>
  
  <p>The function is "keys" (not that it matters) and I'm trying something like this:</p>
  
  <pre><code>$ keys | awk '{ print $1"\t\t" $2 }'
  </code></pre>
  
  <p>but the output (a snippet of it, that is) looks like this:</p>
  
  <pre><code>"option-y"      yank-pop
  "option-z"      execute-last-named-cmd
  "option-|"      vi-goto-column
  "option-~"      _bash_complete-word
  "option-control-?"      backward-kill-word
  "control-_"     undo
  "control-?"     backward-delete-char
  </code></pre>
  
  <p>How can I force things to stay in neat columns?  Is this possible with awk, or do I need to use something else?</p>