Uniq is a line-oriented Unix command-line tool dealing with adjacent identical lines, available on many platforms.
Command-line options aka switches of uniq:
- -u: (for unique) Output singleton blocks: output only lines that are not part of blocks of multiple adjacent identical lines.
- -d: (for duplicate) Output collapsed multiline blocks: output a single line for each block of multiple adjacent identical lines, discarding lines for blocks of size one.
- -c: (for count) Output a single line per a block of one or more adjacent identical lines, preceded by the number of lines in the block.
Command-line options aka switches of some versions of uniq:
- -fnumber: Disregard a number of fields in a line
- -i: Case insensitive.
- -snumber: Disregard a number of characters in a line
- Uniquify files, coreutils, gnu.org
Examples of uniq use:
- uniq file.txt
- Of adjacent one or more identical lines, outputs only one of them.
- sort file.txt | uniq
- Sorts and then, of identical lines, outputs only one of them. Sorting ensures that originally non-adjacent lines that were identical become adjacent.
- sort file.txt | uniq -u
- Outputs singleton blocks only.
- sort file.txt | uniq -d
- Outputs a single line per multiline block, filtering out singletons.
- sort file.txt | uniq -c
- Precedes each line with the block size.
- sort file.txt | uniq -u -d
- In GNU uniq, outputs nothing, since each of the two options acts as a filter, and combined they filter out everything.