Man Pages

uniq - phpMan uniq - phpMan

Command: man perldoc info search(apropos)  

File:,  Node: uniq invocation,  Next: comm invocation,  Prev: shuf invocation,  Up: Operating on sorted files

7.3 `uniq': Uniquify files

`uniq' writes the unique lines in the given `input', or standard input
if nothing is given or for an INPUT name of `-'.  Synopsis:

     uniq [OPTION]... [INPUT [OUTPUT]]

   By default, `uniq' prints its input lines, except that it discards
all but the first of adjacent repeated lines, so that no output lines
are repeated.  Optionally, it can instead discard lines that are not
repeated, or all repeated lines.

   The input need not be sorted, but repeated input lines are detected
only if they are adjacent.  If you want to discard non-adjacent
duplicate lines, perhaps you want to use `sort -u'.  *Note sort

   Comparisons honor the rules specified by the `LC_COLLATE' locale

   If no OUTPUT file is specified, `uniq' writes to standard output.

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

`-f N'
     Skip N fields on each line before checking for uniqueness.  Use a
     null string for comparison if a line has fewer than N fields.
     Fields are sequences of non-space non-tab characters that are
     separated from each other by at least one space or tab.

     For compatibility `uniq' supports an obsolete option syntax `-N'.
     New scripts should use `-f N' instead.

`-s N'
     Skip N characters before checking for uniqueness.  Use a null
     string for comparison if a line has fewer than N characters.  If
     you use both the field and character skipping options, fields are
     skipped over first.

     On older systems, `uniq' supports an obsolete option syntax `+N'.
     This obsolete behavior can be enabled or disabled with the
     `_POSIX2_VERSION' environment variable (*note Standards
     conformance::), but portable scripts should avoid commands whose
     behavior depends on this variable.  For example, use `uniq ./+10'
     or `uniq -s 10' rather than the ambiguous `uniq +10'.

     Print the number of times each line occurred along with the line.

     Ignore differences in case when comparing lines.

     Discard lines that are not repeated.  When used by itself, this
     option causes `uniq' to print the first copy of each repeated line,
     and nothing else.

     Do not discard the second and subsequent repeated input lines, but
     discard lines that are not repeated.  This option is useful mainly
     in conjunction with other options e.g., to ignore case or to
     compare only selected fields.  The optional DELIMIT-METHOD tells
     how to delimit groups of repeated lines, and must be one of the

          Do not delimit groups of repeated lines.  This is equivalent
          to `--all-repeated' (`-D').

          Output a newline before each group of repeated lines.  With
          `--zero-terminated' (`-z'), use a zero byte (ASCII NUL)
          instead of a newline.

          Separate groups of repeated lines with a single newline.
          With `--zero-terminated' (`-z'), use a zero byte (ASCII NUL)
          instead of a newline.  This is the same as using `prepend',
          except that no delimiter is inserted before the first group,
          and hence may be better suited for output direct to users.

     Note that when groups are delimited and the input stream contains
     two or more consecutive blank lines, then the output is ambiguous.
     To avoid that, filter the input through `tr -s '\n'' to replace
     each sequence of consecutive newlines with a single newline.

     This is a GNU extension.

     Discard the first repeated line.  When used by itself, this option
     causes `uniq' to print unique lines, and nothing else.

`-w N'
     Compare at most N characters on each line (after skipping any
     specified fields and characters).  By default the entire rest of
     the lines are compared.

     Delimit items with a zero byte rather than a newline (ASCII LF).
     I.E. treat input as items separated by ASCII NUL and terminate
     output items with ASCII NUL.  This option can be useful in
     conjunction with `perl -0' or `find -print0' and `xargs -0' which
     do the same in order to reliably handle arbitrary file names (even
     those containing blanks or other special characters).

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