Lesson 1.3: Use grep and regular expressions to analyze text


The grep command is one of the most useful commands in a Linux terminal environment. The name grep stands for “global regular expression print”. This means that you can use grep to check whether the input it receives matches a specified pattern.

  • [ ]: Matches any one of a set characters
  • with hyphen: Matches any one of a range characters
  • ^: The pattern following it must occur at the beginning of each line
  • ^ with [ ] : The pattern must not contain any character in the set specified
  • $: The pattern preceding it must occur at the end of each line
  • . (dot): Matches any one character
  • \ (backslash): Ignores the special meaning of the character following it
  • *: zero or more occurrences of the previous character
  • (dot).*: Nothing or any numbers of characters.

Example File:

[sanjeeb@client ~]$ cat example_file Newa Newb Newc Newd Newe Newf Newg Newh

Example 1: [ ] : Matches any one of a set characters

[sanjeeb@client ~]$ grep "New[a,b,c]" example_file Newa Newb Newc
[sanjeeb@client ~]$ grep "New[h][d]" example_file Newhdef [sanjeeb@client ~]$ grep "New[h][def]" example_file Newhdef [sanjeeb@client ~]$ grep "New[h][defghi]" example_file Newhdef Newhghi

Example 2: Use [ ] with hyphen: Matches any one of a range characters

[sanjeeb@client ~]$ grep "New[0-1][d-o]" example_file New0def New0ghi New0jkl New0mno New1def New1ghi New1jkl New1mno

Example 3: Use ^: The pattern following it must occur at the beginning of each line

[sanjeeb@client ~]$ grep "^old" example_file old1file old2image old3audio old4video old5readme [sanjeeb@serverB test]$ cat testfile new1 new2 new3 new4 new5 new6 new7 new8 new9 This is new file1 This is new file2 # This is comment 1 # This is comment 2 [sanjeeb@serverB test]$ grep "^[#]" testfile # This is comment 1 # This is comment 2 [sanjeeb@serverB test]$ grep "^[^#]" testfile new1 new2 new3 new4 new5 new6 new7 new8 new9 This is new file1 This is new file2

Example 4: Use ^ with [ ]: The pattern must not contain any character in the set specified

[sanjeeb@client ~]$ grep "^[a-d]" example_file a boy bad boy cute puppy dead plant

Example 5: Use $: The pattern preceding it must occur at the end of each line

[sanjeeb@client ~]$ grep "y$" example_file a boy bad boy cute puppy jersey lonely money
[sanjeeb@client ~]$ grep "oy$" example_file a boy bad boy

Example 6: Use . (dot): Matches any one character

[sanjeeb@client ~]$ grep "b.y$" example_file a boy bad boy bengal bay

Example 7: Use \ (backslash): Ignores the special meaning of the character following it

[sanjeeb@client ~]$ grep "New.pqr" example_file Newhpqr New2pqr New.pqr

We can see that the special character is not ignored so prints both h and 2

[sanjeeb@client ~]$ grep "New\.\pqr" example_file New.pqr

By adding Backslash

Example 8: Use *: zero or more occurrences of the previous character

[sanjeeb@client ~]$ grep "kni*" example_file knife [sanjeeb@client ~]$ grep "kni*f*" example_file knife

Example 9: Use (dot).*: Nothing or any numbers of characters.

[sanjeeb@client ~]$ grep ".*abc" example_file Newhabc New0abc New1abc New$abc [sanjeeb@client ~]$ grep ".*boy" example_file a boy bad boy
All systems normal

© 2025 2023 Sanjeeb KC. All rights reserved.