Pipelines and pattern matching

Basics of Linux Command Line Pipelines, pattern matching and output redirect
8 minutes
Share the link to this page
You need to have access to the item to view this lesson.
One-time Fee
List Price:  $99.99
You save:  $30
List Price:  €93.51
You save:  €28.05
List Price:  £79.03
You save:  £23.71
List Price:  CA$136.97
You save:  CA$41.09
List Price:  A$150.33
You save:  A$45.10
List Price:  S$135.50
You save:  S$40.65
List Price:  HK$780.43
You save:  HK$234.15
CHF 62.53
List Price:  CHF 89.34
You save:  CHF 26.80
NOK kr738.84
List Price:  NOK kr1,055.54
You save:  NOK kr316.69
DKK kr488.13
List Price:  DKK kr697.37
You save:  DKK kr209.23
List Price:  NZ$163.36
You save:  NZ$49.01
List Price:  د.إ367.26
You save:  د.إ110.19
List Price:  ৳11,723.96
You save:  ৳3,517.54
List Price:  ₹8,355.70
You save:  ₹2,506.96
List Price:  RM471.25
You save:  RM141.39
List Price:  ₦148,785.12
You save:  ₦44,640
List Price:  ₨27,788.35
You save:  ₨8,337.33
List Price:  ฿3,666.28
You save:  ฿1,099.99
List Price:  ₺3,282.67
You save:  ₺984.90
List Price:  B$543.15
You save:  B$162.96
List Price:  R1,796.21
You save:  R538.91
List Price:  Лв182.70
You save:  Лв54.81
List Price:  ₩138,925.10
You save:  ₩41,681.70
List Price:  ₪375.92
You save:  ₪112.78
List Price:  ₱5,882.56
You save:  ₱1,764.94
List Price:  ¥15,975.90
You save:  ¥4,793.25
List Price:  MX$1,810.89
You save:  MX$543.32
List Price:  QR363.91
You save:  QR109.18
List Price:  P1,347.37
You save:  P404.25
List Price:  KSh12,921.58
You save:  KSh3,876.86
List Price:  E£4,770.52
You save:  E£1,431.30
List Price:  ብር5,757.32
You save:  ብር1,727.37
List Price:  Kz85,441.45
You save:  Kz25,635
List Price:  CLP$94,087.59
You save:  CLP$28,229.10
List Price:  CN¥726.05
You save:  CN¥217.83
List Price:  RD$5,889.07
You save:  RD$1,766.89
List Price:  DA13,447.25
You save:  DA4,034.58
List Price:  FJ$224.25
You save:  FJ$67.28
List Price:  Q774.24
You save:  Q232.29
List Price:  GY$20,863.05
You save:  GY$6,259.54
ISK kr9,756.60
List Price:  ISK kr13,938.60
You save:  ISK kr4,182
List Price:  DH993.71
You save:  DH298.14
List Price:  L1,779.82
You save:  L534
List Price:  ден5,748.47
You save:  ден1,724.71
List Price:  MOP$803.51
You save:  MOP$241.07
List Price:  N$1,796.82
You save:  N$539.10
List Price:  C$3,673.19
You save:  C$1,102.06
List Price:  रु13,331.31
You save:  रु3,999.79
List Price:  S/379.71
You save:  S/113.92
List Price:  K389.17
You save:  K116.76
List Price:  SAR375.14
You save:  SAR112.55
List Price:  ZK2,541.90
You save:  ZK762.64
List Price:  L465.20
You save:  L139.57
List Price:  Kč2,331.28
You save:  Kč699.45
List Price:  Ft37,069.29
You save:  Ft11,121.90
SEK kr735.41
List Price:  SEK kr1,050.64
You save:  SEK kr315.22
List Price:  ARS$90,545.94
You save:  ARS$27,166.50
List Price:  Bs689.42
You save:  Bs206.84
List Price:  COP$416,289.47
You save:  COP$124,899.33
List Price:  ₡52,155.29
You save:  ₡15,648.15
List Price:  L2,468.10
You save:  L740.50
List Price:  ₲751,075.35
You save:  ₲225,345.14
List Price:  $U3,930.09
You save:  $U1,179.14
List Price:  zł404.43
You save:  zł121.34
Already have an account? Log In


In the previous lecture, we looked at the output of the find command. When searching for all.com files, it was too long to fit into one screen. Now imagine you run the search command that found 100,000 files, there is no way you can find anything useful in the output when it is printed to the terminal. In this lecture, we will talk about Linux pipelines. A pipeline in Linux is a very powerful concept of combining or chaining several commands into one pipe to pass the output of the first command to the second, the output of the second command to the third, and so on. In our example, we'll define output we can paginate it using a viewer like less.

These applications are also known as pagers, because they used for exactly this reason to paginate the output will now pass the output of the find command to a page or less, find slash etc. Minus name, search for corner files. Now I will add an additional pipeline option writer and pas the output to the last. Now we can navigate the search results easier. We could search using slash and do other operations as we learned in the tutorial for less applications. The same thing we can do with text files.

In the resources attached to this lecture, you find the CSV file. It is a comma separated value file has comes from the CSV extension. Let's look inside it. It contains a list of people in the neighborhood visiting different stores on days of the past month. It really doesn't matter what's inside this file. What is important is that it contains an unsorted list of entries in three columns.

These are text fields name and store and a number between one and 31. Let's first print the content and page it using less. We'll see the same thing as calling less Hello But you'll see later why we do it in steps. Let's now sort the output we can do in using source command. Again, the output doesn't fit into one screen so we can apply the same trick and paginated. Now we can navigate in the file, the output is now sorted by a string sorting function.

In this case, the line with 19 will come before the new line tool. Let's try to see unique people whoever went to any store. For this we need to select just one first column of the output. Now we can do this using cut command. I pipe the output to cut. I'll use the argument minus d for delimiter.

I will specify comma and I want to print the first field specified by the minus f one argument. I can also print the same line as in the original file by attaching fields One, two and three this way, and it will print basically the same content as the original file. I can also specify the output delimited for the cut command by appending, an additional argument minus minus output dash delimiter. And for instance, I want to use a space. For now I'm only interested in the first column. I can now sort the output.

And now I can print unique lines by applying additional pipeline operation unique. When you use the unique command, make sure that you sort the output beforehand. for performance reasons it removes duplicates only in sequential lines. If you omit the sort function, we don't get what we expect to get. Let me show the output once again. Now we can print the last 20 lines of this output using the tail command that we talked about before, minus 20.

Or I can do the same and print the first 20 lines using head, head on us and 20. We can also count the lines in the file using wc command with additional argument minus L, or we can count the characters in the file with minus c argument for the wc command. In this simple case, with one piping operator, we could of course use the simpler form with the wc command like this. Let's look at filtering the output. Let me try to find the lines in this file that are relevant for person Bob. We can do it using the grep command.

Adding this to the second pipe after printing the output grab Bob This way it will find all the lines having tags Bob in it, we can enhance our search by adding a more complex search pattern. I will now add the argument for grabs in quotation marks. And you'll see in a second why I will now add the or symbol that looked exactly as the pipe symbol. Now this time I wanted to be in the printer for the grep argument and not the complete line. Hence I prepended with the backslash n eight an additional text that I want to search for Jane. I close the argument with the quotation marks.

And how to find the lines that have either Bob or Jane in the line or maybe both. We can all combine to grep commands in the pipeline and seeing which days Bob visited only Aldi store. And with one more additional argument to the grep command. I can see in which day is Bob visited all stores. But LD with a minus vi argument grep is a powerful command also in the sense that we can use regular expressions to match any occurrence of the text. I now want to find text that matches my pattern, which has been any character dot star, and B again.

This will find mostly Bob Of course, we can also ignore cases by adding the minus AI argument to the grep command. Oh try to search this way be any character see. There's no matched or lines that have B and C and any characters in between them ignore in the case. grep alone can also be applied to single files, and it has a few more additional options. I can also print the line at which the currents was found using minus an argument I can also print the line that matched my text with a so called context. I can also print the context of the line before.

I can also print the context after the matching line with minus a. As you saw now grep can do useful searches and filtering the output. There are arguments for searches in the pipe output, as well as files and there are various options for pattern matching. Some of the common arguments are listed here. It takes time to learn grep usage, but once you must see grep and regular expressions, you can make very complex patterns for searching the file. This is a Swiss knife in piping operations.

And you will definitely have fun learning it. As you saw, we applied multiple operators in the pipeline commands. You can combine as many commands as you like applying grab sort cards and other commands. The key point when using pipelines is that you build your pipeline step by step. This way, you can see the output of each step, and it can even debug your pipelines. Sometimes it is convenient to make a small shell script with the pipeline you are creating this way can execute the script instead of typing all the commands again.

In this lecture, we looked at pipelines of commands to make the output more useful for our consumption. All this time we've printed the output to the terminal. In the next lecture, we will look at how we can print the output of commands and pipelines to a file and make output redirects

Sign Up


Share with friends, get 20% off
Invite your friends to LearnDesk learning marketplace. For each purchase they make, you get 20% off (upto $10) on your next purchase.