Swiftorial Logo
Home
Swift Lessons
Tutorials
Learn More
Career
Resources

Regular Expressions in Shell Scripting

This tutorial provides a comprehensive guide to using regular expressions (regex) in shell scripts. Regular expressions are powerful tools for pattern matching and text processing.

1. Introduction to Regular Expressions

Regular expressions are sequences of characters that define a search pattern. They are used for pattern matching within strings. In shell scripting, regex can be used with tools like grep, sed, and awk.

2. Basic Syntax

Here are some basic regex symbols and their meanings:

  • .: Matches any single character.
  • ^: Matches the beginning of a line.
  • $: Matches the end of a line.
  • *: Matches zero or more occurrences of the preceding character.
  • +: Matches one or more occurrences of the preceding character.
  • ?: Matches zero or one occurrence of the preceding character.
  • []: Matches any one of the enclosed characters.
  • [^]: Matches any character not enclosed.

3. Using Regex with grep

The grep command is used to search for patterns within files. Here are some examples:

3.1. Basic Pattern Matching

Search for lines containing "hello":

grep "hello" file.txt

This command searches for lines containing the word "hello" in "file.txt".

3.2. Using Anchors

Search for lines starting with "hello":

grep "^hello" file.txt

This command searches for lines that start with "hello" in "file.txt".

3.3. Using Character Classes

Search for lines containing any digit:

grep "[0-9]" file.txt

This command searches for lines that contain any digit in "file.txt".

4. Using Regex with sed

The sed command is a stream editor used for parsing and transforming text. Here are some examples:

4.1. Substituting Text

Replace "hello" with "hi":

sed 's/hello/hi/g' file.txt

This command replaces all occurrences of "hello" with "hi" in "file.txt".

4.2. Deleting Lines

Delete lines containing "hello":

sed '/hello/d' file.txt

This command deletes all lines containing "hello" in "file.txt".

5. Using Regex with awk

The awk command is a powerful text processing tool. Here are some examples:

5.1. Printing Lines Matching a Pattern

Print lines containing "hello":

awk '/hello/ {print}' file.txt

This command prints all lines containing "hello" in "file.txt".

5.2. Using Field Separators

Print the first field of lines containing "hello":

awk '/hello/ {print $1}' file.txt

This command prints the first field of lines containing "hello" in "file.txt".

6. Advanced Regex Patterns

Advanced regex patterns allow for more complex matching. Here are some examples:

6.1. Grouping

Match "hello" or "hi":

grep -E "(hello|hi)" file.txt

This command searches for lines containing either "hello" or "hi" in "file.txt".

6.2. Repetition

Match lines with three consecutive digits:

grep -E "[0-9]{3}" file.txt

This command searches for lines containing three consecutive digits in "file.txt".

7. Conclusion

In this tutorial, you learned how to use regular expressions in shell scripts for pattern matching and text processing. Regular expressions are powerful tools that can simplify complex text processing tasks, and mastering them will greatly enhance your shell scripting capabilities.