Is it possible to somehow implement a search in csv as follows: if the value “Fitter” is in csv, then copy the entire line with this value into a new csv file.
For example:
# first define your "filter", what are you searching for:
[regex] $Filter = "Enter your search string here"
# Specify CSV file location
$File = "$pwd\sample.csv"
# Get file line by line and grab all lines that match
Get-Content $File | Where-Object { $Filter.IsMatch($_) }
This will get all lines that match your search pattern.
If you want to get first match and ignore the rest then replace 3rd line with this:
Get-Content $File | ForEach-Object {
if ($Filter.IsMatch($_))
{
# Output first match
Write-Output $_
# Stop processing
break
}
}
Keep in mind that “Filter” is regex pattern here, if your pattern contains regex special characters then escape them, for example:
[regex] $Filter = [regex]::Escape("Enter your pattern here")
I have implemented as follows:
$ Files = "C:\source file.csv"
Get-Content $ Files | Select-String "search value" | Export-Csv "C:\Target file.csv" -Encoding UTF8 -Delimiter ";"
But, for some reason, a lot of unnecessary columns / values appear:
"IgnoreCase";"LineNumber";"Line";"Filename";"Path";"Pattern";"Context";"Matches"