expand, unexpand —
expand tabs to spaces, and vice versa
  
    | expand | [ -ttabstop]
      [-ttab1,tab2,...,tabn]
      [file ...] | 
  
    | unexpand | [ -a] [-ttab1,tab2,...,tabn] [file
      ...] | 
expand processes the named files or the standard input
  writing the standard output with tabs changed into blanks. Backspace
  characters are preserved into the output and decrement the column count for
  tab calculations. expand is useful for pre-processing
  character files (before sorting, looking at specific columns, etc.) that
  contain tabs.
If a single tabstop argument is given, then
    tabs are set tabstop spaces apart instead of the
    default 8. If multiple tabstops are given then the tabs are set at those
    specific columns.
unexpand puts tabs back into the data from
    the standard input or the named files and writes the result on the standard
    output.
Option (with unexpand only):
  - -a
- By default, only leading blanks and tabs are reconverted to maximal
      strings of tabs. If the -aoption is given, then
      tabs are inserted whenever they would compress the resultant file by
      replacing two or more characters.
Theexpand command appeared in
  1BSD.