Read file line by line in PowerShell

powershell, powershell-ise

Solution

Not much documentation on PowerShell loops.

Documentation on loops in PowerShell is plentiful, and you might want to check out the following help topics: `about_For`, `about_ForEach`, `about_Do`, `about_While`.

foreach($line in Get-Content .\file.txt) {
    if($line -match $regex){
        # Work here
    }
}

Another idiomatic PowerShell solution to your problem is to pipe the lines of the text file to the `ForEach-Object` cmdlet:

Get-Content .\file.txt | ForEach-Object {
    if($_ -match $regex){
        # Work here
    }
}

Instead of regex matching inside the loop, you could pipe the lines through `Where-Object` to filter just those you're interested in:

Get-Content .\file.txt | Where-Object {$_ -match $regex} | ForEach-Object {
    # Work here
}

Problem

I want to read a file line by line in PowerShell. Specifically, I want to loop through the file, store each line in a variable in the loop, and do some processing on the line. I know the Bash equivalent: ``` while read line do if [[ $line =~ $regex ]]; then # work here fi done < file.txt ``` Not much documentation on PowerShell loops.

Original source

Related problems