07. Pipelining |, sort, uniq, grep, wc, tee

Pipelining is a very powerful feature that allows you to send the output of one command as the input to another.

The notation used is a vertical bar |.

$ ls /usr/bin | less 

The output of the ls /usr/bin command will be passed in as an argument to the command on the right. Thus, we will be able to view the contents in our bin file through the less file reader.

We can have multiple pipes, which makes pipelineing not only useful, but fun!

Sorting

To sort the outputs alphabetically, use the sort command.

$ ls .. | sort

Sort Options

-f
Ignore case.
-M
Month sort with JAN < ... < DEC
-r
Reverse sort.

Omitting repeated lines with uniq

To grab just the unique names of within a file, we can use uniq.

$ cat employeeNames.txt | sort | uniq 

Uniq options

-c
Precede each line with the count of the occurences in the input.
-d
Only output the repeated lines.
-u
Output lines that are not repeated.
-i
Case insensitive comparison.

Using grep to find text patterns

To find text patterns, we can use grep, followed by a string.

Grep actually stands for "global expression pattern." If you know regex, you can use regex syntax to capture a specific string pattern.

$ ls .. | grep .html

This would return all outputs that have the .html extention in them.

Checking the number of lines, words and bytes

To check the number of lines, words and bytes in a file, we can use the wc command.

$ less fileName.txt | wc
5 7 61

This means we have 5 lines, 7 words and 61 bytes.

Options

-c
Number of bytes in each input file to standard out.
-l
Number of lines in each input file to standard out.
-m
Number of characters in each input files to standard out.
-w
Number of words in each input file to standard out.

Outputting to a file and standard out

We can use the tee command to output to standard out as well as a file. In this way, we can save the results of our pipeline.

$ ls /usr/bin | tee test.txt | grep zip

This command lists all files in /usr/bin, sending it off to the next pipe, then writes it to test.txt.

Using man to check for options

Remember to check each command's man page to learn more options!

$ man sort

Aching back from coding all day?

Inversion Therapy Table

Aching back from coding all day? Try Back Problems

Stretch out your back and relieve your back muscles with inversion therapy. This device counteracts the forces of gravity on the body by decompressing and elongating the spine. By using this product just ten minutes a day, you can be well on your way to improved circulation and posture while relieving muscle aches, back pain and stress.

$$ Check price
119.98119.98Amazon 4.5 logo(1,700+ reviews)

More Back Problems resources

Take your Linux skills to the next level!

Linux for Beginners

Take your Linux skills to the next level! Try Linux & UNIX

Linux for Beginners doesn't make any assumptions about your background or knowledge of Linux. You need no prior knowledge to benefit from this book. You will be guided step by step using a logical and systematic approach. As new concepts, commands, or jargon are encountered they are explained in plain language, making it easy for anyone to understand.

$ Check price
24.9924.99Amazon 4.5 logo(101+ reviews)

More Linux & UNIX resources

Ad