What if you could clean messy lists in seconds instead of hours?
Why sort and uniq in Linux CLI? - Purpose & Use Cases
Imagine you have a long list of names on paper, some repeated many times. You want to find out which names appear and how often, but you have to do it by hand, scanning line by line.
Doing this manually is slow and tiring. You might miss duplicates or count some names twice. It's easy to get confused and make mistakes, especially with long lists.
The sort and uniq commands quickly organize your list and remove duplicates. They do the hard work for you, so you get a clean, sorted list without repeats in seconds.
Look at each line, write down names, cross off duplicates by hand
sort names.txt | uniq
You can instantly clean and analyze large lists, saving time and avoiding errors.
Suppose you have a file with thousands of email addresses from a signup form. Using sort and uniq, you can quickly find all unique emails to send a newsletter without duplicates.
Manual duplicate checking is slow and error-prone.
sort organizes data; uniq removes duplicates.
Together, they make list cleanup fast and reliable.
Practice
uniq command do when used alone on a text file?Solution
Step 1: Understand the uniq command behavior
Theuniqcommand filters out repeated lines only if they are next to each other.Step 2: Compare with other options
It does not sort lines or count all lines; it only removes adjacent duplicates.Final Answer:
Removes repeated adjacent lines -> Option BQuick Check:
uniq removes adjacent duplicates = D [OK]
- Thinking uniq sorts lines
- Assuming uniq removes all duplicates anywhere
- Confusing uniq with wc (word count)
data.txt and remove duplicate lines?Solution
Step 1: Understand the order of commands
To remove duplicates correctly, lines must be sorted first so duplicates become adjacent.Step 2: Check each option
sort data.txt | uniq sorts then pipes to uniq, which removes adjacent duplicates. uniq data.txt | sort runs uniq first, which won't remove all duplicates if unsorted. sort -u data.txt uses sort -u which is valid but not the pipe syntax asked. uniq -s data.txt is invalid syntax.Final Answer:
sort data.txt | uniq -> Option AQuick Check:
Sort before uniq to remove duplicates = A [OK]
- Running uniq before sort
- Using invalid uniq options
- Confusing sort -u with uniq
names.txt with contents:bob alice bob carol alice bob
What is the output of
sort names.txt | uniq?Solution
Step 1: Sort the file lines
Sorting the lines alphabetically gives: alice, alice, bob, bob, bob, carol.Step 2: Apply uniq to remove adjacent duplicates
uniq removes repeated adjacent lines, so only one of each remains: alice, bob, carol.Final Answer:
alice bob carol -> Option AQuick Check:
Sort then uniq removes duplicates = alice, bob, carol [OK]
- Not sorting before uniq
- Expecting uniq to remove all duplicates anywhere
- Confusing output order
sort data.txt | uniq but notice duplicates remain. What is the most likely cause?Solution
Step 1: Understand how sort and uniq treat whitespace
sort and uniq treat lines with trailing spaces or tabs as different lines, so duplicates with extra spaces won't be adjacent identical.Step 2: Check other options
uniq misspelling would cause error, not duplicates remaining. sort works on text files. Empty file means no duplicates.Final Answer:
The file contains lines with trailing spaces or tabs -> Option CQuick Check:
Trailing spaces cause uniq to miss duplicates = C [OK]
- Assuming uniq always removes duplicates regardless of spaces
- Ignoring trailing whitespace differences
- Thinking sort fails on text files
access.log. Which command correctly sorts, removes duplicates, and counts unique lines?Solution
Step 1: Understand the goal
You want the count of unique IP addresses, so you need to remove duplicates and count the unique lines.Step 2: Analyze each option
sort access.log | uniq -c counts occurrences but does not sum total unique lines. uniq -c access.log | sort counts duplicates before sorting, so misses some. sort -u access.log | wc -l usessort -uto get unique lines, then counts lines withwc -l, which gives the unique count. uniq access.log | wc -l counts lines after uniq without sorting, so duplicates may remain.Final Answer:
sort -u access.log | wc -l -> Option DQuick Check:
sort -u then wc -l counts unique lines = B [OK]
- Using uniq -c without sorting first
- Counting lines before removing duplicates
- Confusing uniq -c output with total unique count
Ready to prove it?
Pass the test and this pattern moves unknown
