unexpand - convert spaces to tabs
unexpand [ -a| -t tablist ] [ file..]
The unexpand utility copies files or the standard input to the standard
output, converting blank characters at the beginning of each line into
the maximum number of tab characters followed by the minimum number of
space characters needed to fill the same column positions originally
filled by the translated blank characters. By default, tabstops are set
at every eighth column position. Each backspace character is copied to
the output, and causes the column position count for tab calculations to
be decremented; the count will never be decremented to a value less than
The following options are supported:
-a In addition to translating blank characters at the beginning of each
line, translate all sequences of two or more blank characters
immediately preceding a tab stop to the maximum number of tab
characters followed by the minimum number of space characters needed
to fill the same column positions originally filled by the
translated blank characters.
Specify the tab stops. The option-argument tablist must be a single
argument consisting of a single positive decimal integer or
multiple positive decimal integers, separated by blank characters or
commas, in ascending order. If a single number is given, tabs will
be set tablist column positions apart instead of the default 8. If
multiple numbers are given, the tabs will be set at those specific
Each tab-stop position N must be an integer value greater than zero,
and the list must be in strictly ascending order. This is taken to
mean that, from the start of a line of output, tabbing to position N
causes the next character output to be in the (N+1)th column
position on that line. When the -t option is not specified, the
default is the equivalent of specifying -t 8 (except for the
interaction with -a, described below).
No space-to-tab character conversions occur for characters at
positions beyond the last of those specified in a multiple tab-stop
When -t is specified, the presence or absence of the -a option is
ignored; conversion will not be limited to the processing of leading
The following operand is supported:
-t file The pathname of a text file to be used as input.
See INPUT FILES.
Input files must be text files.
ENVIRONMENT VARIABLES [Toc] [Back]
The following environment variables affect the execution of unexpand:
LANG Provide a default value for the internationalisation variables
that are unset or null. If LANG is unset or null, the corresponding value
from the implementation-specific default locale will be used. If any of
the internationalisation variables contains an invalid setting, the
utility will behave as if none of the variables had been defined.
LC_ALL If set to a non-empty string value, override the values of
all the other internationalisation variables.
LC_CTYPE Determine the locale for the interpretation of sequences of
bytes of text data as characters (for example, single- as opposed to
multi-byte characters in arguments and input files), the processing of
tab and space characters, and for the determination of the width in
column positions each character would occupy on a constant-width font
LC_MESSAGES Determine the locale that should be used to affect the
format and contents of diagnostic messages written to standard error.
The standard output is equivalent to the input files with the specified
space to tab character conversions.
Used only for diagnostic messages.
The following exit values are returned:
0 Successful completion.
>0 An error occurred.
CONSEQUENCES OF ERRORS
One non-intuitive aspect of unexpand is its restriction to leading spaces
when neither -a nor -t is specified. Users who desire to always convert
all spaces in a file can easily alias unexpand to use the -a or -t 8
First released in Issue 4.
PPPPaaaaggggeeee 3333 [ Back ]