Skip to main content

Mastering the uniq Command in Linux

The uniq command in Linux is a utility that filters out adjacent duplicate lines from input text. Often used with the sort command, uniq is a vital tool for text processing tasks. This article will delve into the syntax, options, and practical examples of using uniq.

Syntax of uniq​

The basic syntax for the uniq command is:

uniq [OPTION] [INPUT [OUTPUT]]
  • OPTION: Flags that modify how uniq operates.
  • INPUT: The input file. If not specified, uniq reads from standard input.
  • OUTPUT: The output file. If not specified, uniq writes to standard output.

Options for uniq​

Here is a table outlining some commonly used uniq options, their shorthand, and descriptions:

OptionShorthandDescription
--count-cPrefix lines by the number of occurrences
--repeated-dOnly print duplicate lines
--all-repeated-DPrint all duplicate lines
--ignore-case-iIgnore differences in case when comparing
--unique-uOnly print unique lines
--skip-fields=N-f NSkip N fields on each line before checking for uniqueness
--skip-chars=N-s NSkip N characters before checking for uniqueness
--check-chars=N-w NCompare no more than N characters in lines

Practical Examples​

Basic Usage​

Consider a file called numbers.txt with the following contents:

Create numbers.txt file
1
2
2
3
3
3
4
4
5

Run uniq to remove adjacent duplicate lines:

uniq numbers.txt

Output:

1
2
3
4
5

Counting Occurrences​

To count the occurrences of each line, use the -c option:

uniq -c numbers.txt

Output:

1 1
1 2
2 3
2 4
1 5

Display Only Duplicate Lines​

To display only the duplicate lines, use the -d option:

uniq -d numbers.txt

Output:

2
3
4

Display Only Unique Lines​

To display only the unique lines, use the -u option:

uniq -u numbers.txt

Output:

1
5

Skipping Fields​

To skip the first field before comparing, use the -f option:

apple 1
orange 1
banana 2

Run:

uniq -f 1 numbers.txt

Output:

apple 1
banana 2

Combining Multiple Options​

You can combine multiple options to execute more complex queries. For instance, to display only the unique lines while ignoring case:

uniq -ui numbers.txt

Conclusion​

The uniq command is extremely useful for text manipulation tasks in Linux. Its real power is unleashed when used in combination with other text processing utilities like sort, awk, and sed. As seen from the examples, uniq offers various options to skip fields, count occurrences, and display only unique or duplicate lines, making it a versatile command you should get familiar with.

What Can You Do Next 🙏😊​

If you liked the article, consider subscribing to Cloudaffle, my YouTube Channel, where I keep posting in-depth tutorials and all edutainment stuff for software developers.

YouTube @cloudaffle