9.2 expand: Convert tabs to spaces

expand writes the contents of each given file, or standard input if none are given or for a file of ‘-’, to standard output, with tab characters converted to the appropriate number of spaces. Synopsis:

expand [option]… [file]…

By default, expand converts all tabs to spaces. It preserves backspace characters in the output; they decrement the column count for tab calculations. The default action is equivalent to -t 8 (set tabs every 8 columns).

The program accepts the following options. Also see Common options.

-t tab1[,tab2]…
--tabs=tab1[,tab2]…

If only one tab stop is given, set the tabs tab1 spaces apart (default is 8). Otherwise, set the tabs at columns tab1, tab2, … (numbered from 0), and replace any tabs beyond the last tab stop given with single spaces. Tab stops can be separated by blanks as well as by commas.

As a GNU extension the last tab specified can be prefixed with a ‘/’ to indicate a tab size to use for remaining positions. For example, --tabs=2,4,/8 will set tab stops at position 2 and 4, and every multiple of 8 after that.

Also the last tab specified can be prefixed with a ‘+’ to indicate a tab size to use for remaining positions, offset from the final explicitly specified tab stop. For example, to ignore the 1 character gutter present in diff output, one can specify a 1 character offset using --tabs=1,+8, which will set tab stops at positions 1,9,17,…

For compatibility, GNU expand also accepts the obsolete option syntax, -t1[,t2]…. New scripts should use -t t1[,t2]… instead.

-i
--initial

Only convert initial tabs (those that precede all non-space or non-tab characters) on each line to spaces.

An exit status of zero indicates success, and a nonzero value indicates failure.