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
✗ Incorrect
Select-String is the PowerShell cmdlet designed for searching text with regex patterns.
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'
✗ Incorrect
The caret ^ means the start of a line, so ^a matches lines that start with '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
✗ Incorrect
You can use wildcards like *.txt in the -Path parameter to search many files at once.
What switch makes Select-String return lines that do NOT match the pattern?
A-NoMatch
B-Exclude
C-NotMatch
D-InvertMatch
✗ Incorrect
The -NotMatch switch returns lines that do not match the regex pattern.
If you want to find the word 'cat' regardless of case, which command is correct?
By default, Select-String searches case-insensitively, so just -Pattern 'cat' works.
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
Step 1: Understand Select-String usage
Select-String searches text for a pattern, here 'error'.
Step 2: Analyze parameters
The -Pattern specifies the regex 'error', and -Path points to the file 'log.txt'.
Final Answer:
Searches the file 'log.txt' for lines containing the word 'error'. -> Option D
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
Step 1: Recall correct parameter names
-Pattern specifies the regex pattern, and -Path specifies the file path.
Step 2: Match syntax to options
Select-String -Pattern 'fail' -Path 'output.log' uses -Pattern 'fail' and -Path 'output.log', which is correct syntax.
Final Answer:
Select-String -Pattern 'fail' -Path 'output.log' -> Option A
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
Step 1: Understand the regex '^a'
The caret '^' means start of line, so '^a' matches lines starting with 'a'.
Step 2: Apply regex to file lines
Lines starting with 'a' are 'apple', 'apricot', and 'avocado'.
Final Answer:
Lines starting with 'a': apple, apricot, avocado -> Option C
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
Step 1: Check regex pattern validity
The pattern "[0-9]+" correctly matches one or more digits.
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.
Final Answer:
The file path is wrong or file does not exist. -> Option B
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
Step 1: Understand regex for 'error' or 'fail'
The pattern 'error|fail' matches either word. To ignore case, use '(?i)' inline regex flag.
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.
Final Answer:
Select-String -Pattern '(?i)error|fail' -Path 'report.txt' -> Option A
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 unknownstrongwhile earning +1 Grip toward your certificate.