unexpand [ -a| -t tablist][file...]<img src="../images/opt-end.gif" alt="[Option End]" border="0">
The unexpand utility shall copy files or standard input to standard output, converting <blank>s at the beginning of each line into the maximum number of <tab>s followed by the minimum number of <space>s needed to fill the same column positions originally filled by the translated <blank>s. By default, tabstops shall be set at every eighth column position. Each <backspace> shall be copied to the output, and shall cause the column position count for tab calculations to be decremented; the count shall never be decremented to a value less than one.
The unexpand utility shall conform to the Base Definitions volume of IEEE Std 1003.1-2001, Section 12.2, Utility Syntax Guidelines.
The following options shall be supported:
The application shall ensure that each tab-stop position N is an integer value greater than zero, and the list shall be in strictly ascending order. This is taken to mean that, from the start of a line of output, tabbing to position N shall cause 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 shall be the equivalent of specifying -t 8 (except for the interaction with -a, described below).
No <space>-to- <tab> conversions shall occur for characters at positions beyond the last of those specified in a multiple tab-stop list.
When -t is specified, the presence or absence of the -a option shall be ignored; conversion shall not be limited to the processing of leading <blank>s.
The following operand shall be supported:
See the INPUT FILES section.
The input files shall be text files.
The following environment variables shall affect the execution of unexpand:
Default.
The standard output shall be equivalent to the input files with the specified <space>-to- <tab> conversions.
The standard error shall be used only for diagnostic messages.
None.
None.
The following exit values shall be returned:
Default.
The following sections are informative.
One non-intuitive aspect of unexpand is its restriction to leading spaces when neither -a nor -t is specified. Users who always want to convert all spaces in a file can easily alias unexpand to use the -a or -t 8 option.
None.
On several occasions, consideration was given to adding a -t option to the unexpand utility to complement the -t in expand (see expand ). The historical intent of unexpand was to translate multiple <blank>s into tab stops, where tab stops were a multiple of eight column positions on most UNIX systems. An early proposal omitted -t because it seemed outside the scope of the User Portability Utilities option; it was not described in any of the base documents. However, hard-coding tab stops every eight columns was not suitable for the international community and broke historical precedents for some vendors in the FORTRAN community, so -t was restored in conjunction with the list of valid extension categories considered by the standard developers. Thus, unexpand is now the logical converse of expand.
None.
expand , tabs