logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

This manual page is part of the POSIX Programmer's Manual. The Linux implementation of this interface

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 -t8 option.

Asynchronous Events

       Default.

Consequences Of Errors

       Default.

       Thefollowingsectionsareinformative.

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.

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‐2017, Section8.2, InternationalizationVariables  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.

Examples

       None.

Exit Status

       The following exit values shall be returned:

        0    Successful completion.

       >0    An error occurred.

Extended Description

       None.

Future Directions

       None.

Input Files

       The input files shall be text files.

Name

       unexpand — convert spaces to tabs

Operands

       The following operand shall be supported:

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

Options

       The  unexpand utility shall conform to the Base Definitions volume of POSIX.1‐2017, Section12.2, UtilitySyntaxGuidelines.

       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.

       -ttablist
                 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  -t8 (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.

Output Files

       None.

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.

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 for IEEE Std  1003.2‐1992.   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.

See Also

expand, tabs

       The Base Definitions volume of POSIX.1‐2017, Chapter8,  EnvironmentVariables,  Section12.2,  UtilitySyntaxGuidelines

Stderr

       The standard error shall be used only for diagnostic messages.

Stdin

       See the INPUT FILES section.

Stdout

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

Synopsis

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

See Also