Provided by: manpages-posix_2013a-2_all bug

PROLOG

       This  manual  page  is part of the POSIX Programmer's Manual.  The Linux implementation of this interface
       may differ (consult the corresponding Linux manual page for details of Linux behavior), or the  interface
       may not be implemented on Linux.

NAME

       unexpand — convert spaces to tabs

SYNOPSIS

       unexpand [−a|−t tablist] [file...]

DESCRIPTION

       The unexpand utility shall copy files or standard input to 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 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.

OPTIONS

       The unexpand utility shall conform to the Base Definitions volume of POSIX.1‐2008, Section 12.2,  Utility
       Syntax Guidelines.

       The following options shall be 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.

       −t tablist
                 Specify the tab stops. The application shall ensure  that  the  tablist  option-argument  is  a
                 single  argument  consisting  of a single positive decimal integer or multiple positive decimal
                 integers, separated by <blank> or <comma> characters, in ascending order. If a single number is
                 given,  tabs  shall be set tablist column positions apart instead of the default 8. If multiple
                 numbers are given, the tabs shall be set at those specific column positions.

                 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> characters.

OPERANDS

       The following operand shall be supported:

       file      A pathname of a text file to be used as input.

STDIN

       See the INPUT FILES section.

INPUT FILES

       The input files shall be text files.

ENVIRONMENT VARIABLES

       The following environment variables shall affect the execution of unexpand:

       LANG      Provide a default value for the internationalization variables that are unset or null. (See the
                 Base Definitions volume of POSIX.1‐2008, Section 8.2, Internationalization  Variables  for  the
                 precedence   of   internationalization  variables  used  to  determine  the  values  of  locale
                 categories.)

       LC_ALL    If set to a non-empty string value, override the values of all the  other  internationalization
                 variables.

       LC_CTYPE  Determine  the  locale  for the interpretation of sequences of bytes of text data as characters
                 (for example, single-byte 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 an output device.

       LC_MESSAGES
                 Determine the locale that should be used to  affect  the  format  and  contents  of  diagnostic
                 messages written to standard error.

       NLSPATH   Determine the location of message catalogs for the processing of LC_MESSAGES.

ASYNCHRONOUS EVENTS

       Default.

STDOUT

       The  standard  output  shall  be  equivalent  to  the  input  files  with  the specified <space>-to-<tab>
       conversions.

STDERR

       The standard error shall be used only for diagnostic messages.

OUTPUT FILES

       None.

EXTENDED DESCRIPTION

       None.

EXIT STATUS

       The following exit values shall be returned:

        0    Successful completion.

       >0    An error occurred.

CONSEQUENCES OF ERRORS

       Default.

       The following sections are informative.

APPLICATION USAGE

       One non-intuitive aspect of unexpand is its restriction to leading <space> characters when neither −a nor
       −t  is  specified.  Users  who  always  want to convert all <space> characters in a file can easily alias
       unexpand to use the −a or −t 8 option.

EXAMPLES

       None.

RATIONALE

       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>
       characters 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.

FUTURE DIRECTIONS

       None.

SEE ALSO

       expand, tabs

       The  Base  Definitions  volume  of  POSIX.1‐2008, Chapter 8, Environment Variables, Section 12.2, Utility
       Syntax Guidelines

COPYRIGHT

       Portions of this text are reprinted and reproduced in electronic form from IEEE Std 1003.1, 2013 Edition,
       Standard  for  Information Technology -- Portable Operating System Interface (POSIX), The Open Group Base
       Specifications Issue 7, Copyright (C) 2013 by the Institute of Electrical and Electronics Engineers,  Inc
       and  The  Open Group.  (This is POSIX.1-2008 with the 2013 Technical Corrigendum 1 applied.) In the event
       of any discrepancy between this version and the original IEEE and The Open Group Standard,  the  original
       IEEE and The Open Group Standard is the referee document. The original Standard can be obtained online at
       http://www.unix.org/online.html .

       Any typographical or formatting errors that appear in this page are most likely to have  been  introduced
       during   the   conversion  of  the  source  files  to  man  page  format.  To  report  such  errors,  see
       https://www.kernel.org/doc/man-pages/reporting_bugs.html .