uniq -- report repeated lines in a file


uniq [ -c | -d | -u ] [ -f fields ] [ -s chars ] [ -n ] [ +n ] [ input [ output ] ]


The uniq command reads the input file and compares adjacent lines. In the normal case, the second and succeeding copies of repeated lines are removed and the lines are compared according to the collating sequence defined by the current locale (see locale(M)); the remainder is written to the output file. The names input and output should always be different. If input is ``-'' then standard input is used.

Note that repeated lines must be adjacent in order to be found; see sort(C). If the -u flag is used, just the lines that are not repeated in the original file are output. The -d option specifies that one copy of just the repeated lines is to be written. The normal mode output is the union of the -u and -d mode outputs.

The -c option supersedes -u and -d and generates an output report in default style but with each line preceded by a count of the number of times it occurred.

The other arguments specify skipping an initial portion of each line in the comparison:

The first n fields together with any blanks before each are ignored. A field is defined as a string of nonspace, nontab characters separated by tabs and spaces from its neighbors.

The first n characters are ignored. Fields are skipped before characters.

-f fields
Same as -n, where n is fields.

-s chars
Same as +n, where n is chars.

See also

comm(C), sort(C)

Standards conformance

uniq is conformant with:

ISO/IEC DIS 9945-2:1992, Information technology - Portable Operating System Interface (POSIX) - Part 2: Shell and Utilities (IEEE Std 1003.2-1992);
AT&T SVID Issue 2;
X/Open CAE Specification, Commands and Utilities, Issue 4, 1992.

© 2003 Caldera International, Inc. All rights reserved.
SCO OpenServer Release 5.0.7 -- 11 February 2003