Bird
Raised Fist0
PowerShellscripting~5 mins

Regex with Select-String in PowerShell - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What does the <code>Select-String</code> cmdlet do in PowerShell?
It searches through text or files for patterns that match a regular expression (regex) and returns the matching lines.
Click to reveal answer
beginner
How do you use Select-String to find the word 'apple' in a file named fruits.txt?
Use the command:
Select-String -Path fruits.txt -Pattern 'apple'
This searches for 'apple' in the file and shows matching lines.
Click to reveal answer
beginner
What is a regular expression (regex) in simple terms?
A regex is like a search pattern made of special characters that helps find text that fits a certain shape or rule, like all words starting with 'a'.
Click to reveal answer
intermediate
How can you make Select-String search case-insensitively?
By default, Select-String is case-insensitive. To make it case-sensitive, add the -CaseSensitive switch set to $true. The -NotMatch switch is used for inverse matching.
Click to reveal answer
beginner
What does the output of Select-String include when it finds a match?
It shows the file name, the line number, and the text of the line where the match was found.
Click to reveal answer
Which cmdlet is used to search text using regex in PowerShell?
ASearch-File
BGet-Content
CFind-Text
DSelect-String
What does the pattern ^a match in Select-String?
ALines ending with 'a'
BLines starting with 'a'
CAny 'a' in the line
DLines containing the word 'a'
How do you search multiple files with Select-String?
AUse wildcards in the -Path parameter
BRun the command multiple times
CUse the -FileList parameter
DIt cannot search multiple files
What switch makes Select-String return lines that do NOT match the pattern?
A-NoMatch
B-Exclude
C-NotMatch
D-InvertMatch
If you want to find the word 'cat' regardless of case, which command is correct?
ASelect-String -Pattern 'cat'
BSelect-String -Pattern 'cat' -CaseSensitive
CSelect-String -Pattern 'cat' -CaseSensitive:`$false
DSelect-String -Pattern 'CAT' -CaseSensitive
Explain how you would use Select-String to find all lines containing a phone number pattern in a text file.
Think about how phone numbers look and how regex can match digits and separators.
You got /3 concepts.
    Describe the output you get from Select-String when it finds matches and how you can use that output.
    Imagine you are looking for a word in many files and want to know exactly where it is.
    You got /4 concepts.

      Practice

      (1/5)
      1. What does the PowerShell cmdlet Select-String -Pattern "error" -Path "log.txt" do?
      easy
      A. Creates a new file named 'error' from 'log.txt'.
      B. Deletes all lines containing 'error' from 'log.txt'.
      C. Replaces the word 'error' with 'warning' in 'log.txt'.
      D. Searches the file 'log.txt' for lines containing the word 'error'.

      Solution

      1. Step 1: Understand Select-String usage

        Select-String searches text for a pattern, here 'error'.
      2. Step 2: Analyze parameters

        The -Pattern specifies the regex 'error', and -Path points to the file 'log.txt'.
      3. Final Answer:

        Searches the file 'log.txt' for lines containing the word 'error'. -> Option D
      4. Quick Check:

        Select-String with -Pattern finds matching lines [OK]
      Hint: Select-String finds matching lines in files using regex [OK]
      Common Mistakes:
      • Thinking Select-String edits files
      • Confusing -Pattern with replacement
      • Assuming it creates new files
      2. Which of the following is the correct syntax to search for the word 'fail' in a file named 'output.log' using Select-String?
      easy
      A. Select-String -Pattern 'fail' -Path 'output.log'
      B. Select-String -Find 'fail' -File 'output.log'
      C. Select-String -Search 'fail' -FilePath 'output.log'
      D. Select-String -Pattern fail -File output.log

      Solution

      1. Step 1: Recall correct parameter names

        -Pattern specifies the regex pattern, and -Path specifies the file path.
      2. Step 2: Match syntax to options

        Select-String -Pattern 'fail' -Path 'output.log' uses -Pattern 'fail' and -Path 'output.log', which is correct syntax.
      3. Final Answer:

        Select-String -Pattern 'fail' -Path 'output.log' -> Option A
      4. Quick Check:

        Correct parameters are -Pattern and -Path [OK]
      Hint: Use -Pattern for regex and -Path for file in Select-String [OK]
      Common Mistakes:
      • Using -File instead of -Path
      • Using -Search or -Find which don't exist
      • Omitting quotes around pattern or path
      3. Given a file 'data.txt' with the following lines:
      apple
      banana
      apricot
      blueberry
      avocado

      What will the command Select-String -Pattern '^a' -Path 'data.txt' output?
      medium
      A. Lines containing 'a' anywhere: apple, banana, apricot, avocado
      B. Lines ending with 'a': banana
      C. Lines starting with 'a': apple, apricot, avocado
      D. No output because '^a' is invalid regex

      Solution

      1. Step 1: Understand the regex '^a'

        The caret '^' means start of line, so '^a' matches lines starting with 'a'.
      2. Step 2: Apply regex to file lines

        Lines starting with 'a' are 'apple', 'apricot', and 'avocado'.
      3. Final Answer:

        Lines starting with 'a': apple, apricot, avocado -> Option C
      4. Quick Check:

        Regex '^a' matches line start with 'a' [OK]
      Hint: ^ means line start in regex, so matches lines starting with 'a' [OK]
      Common Mistakes:
      • Thinking '^a' matches anywhere in line
      • Confusing '^' with end of line
      • Assuming no matches due to regex error
      4. You run Select-String -Pattern "[0-9]+" -Path "file.txt" but get no output, even though 'file.txt' contains numbers. What is the likely problem?
      medium
      A. The regex pattern is incorrect for matching numbers.
      B. The file path is wrong or file does not exist.
      C. Select-String does not support regex patterns.
      D. The command needs -AllMatches to find numbers.

      Solution

      1. Step 1: Check regex pattern validity

        The pattern "[0-9]+" correctly matches one or more digits.
      2. Step 2: Consider file path and existence

        If no output, likely the file path is incorrect or the file does not exist, so no lines are searched.
      3. Final Answer:

        The file path is wrong or file does not exist. -> Option B
      4. Quick Check:

        Valid regex but no output means file issue [OK]
      Hint: Check file path and existence if no matches found [OK]
      Common Mistakes:
      • Assuming regex is wrong when it's correct
      • Thinking Select-String can't use regex
      • Believing -AllMatches is required for any match
      5. You want to find all lines in 'report.txt' that contain either 'error' or 'fail' (case-insensitive). Which command correctly does this?
      hard
      A. Select-String -Pattern '(?i)error|fail' -Path 'report.txt'
      B. Select-String -Pattern 'error|fail' -Path 'report.txt' -CaseSensitive
      C. Select-String -Pattern 'error|fail' -Path 'report.txt' -IgnoreCase
      D. Select-String -Pattern '[errorfail]' -Path 'report.txt'

      Solution

      1. Step 1: Understand regex for 'error' or 'fail'

        The pattern 'error|fail' matches either word. To ignore case, use '(?i)' inline regex flag.
      2. Step 2: Analyze options for case-insensitivity

        Select-String -Pattern '(?i)error|fail' -Path 'report.txt' uses (?i)error|fail which makes the pattern case-insensitive. Options B and C use invalid or non-existent parameters for case sensitivity.
      3. Final Answer:

        Select-String -Pattern '(?i)error|fail' -Path 'report.txt' -> Option A
      4. Quick Check:

        Use '(?i)' for case-insensitive regex in Select-String [OK]
      Hint: Use '(?i)' in regex for case-insensitive matching [OK]
      Common Mistakes:
      • Using -IgnoreCase which is not a Select-String parameter
      • Using character class '[errorfail]' which matches single chars
      • Using -CaseSensitive which enforces case sensitivity
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard