I have a text file log that looks like this
2 total number of add errors
I have a script that is
get-content "c:\logfile.txt | select-string "total number of add errors"
I cant remember how to get it to just show the number.
Any suggestions?
I have a text file log that looks like this
2 total number of add errors
I have a script that is
get-content "c:\logfile.txt | select-string "total number of add errors"
I cant remember how to get it to just show the number.
Any suggestions?
On
You don't need to "get-content" to feed into select-string, it can select straight from a file, but I think it works more neatly without using select-string at all so you can combine the test and getting the number:
gc logfile.txt |%{ if ($_ -match '^(\d+) total number of add errors') { $Matches[1] } }
And if you want to mostly avoid the regular expressions part, this shape works for string split as well:
gc logfile.txt | % { if ( $_ -match 'total number of add errors') { ($_ -split ' ')[0] } }
On
This may be what you are looking for:
#Get the file contents
$text = (Get-Content c:\test.txt)
#If you want to get an error count for each line, store them in a variable
$errorCount = ""
#Go thru each line and get the count
ForEach ($line In $text)
{
#Append to your variable each count
$errorCount = $errorCount + $line.Substring(0,$line.IndexOf("total")).Trim() + ","
}
#Trim off the last comma
$errorCount = $errorCount.TrimEnd(',')
#Pint out the results in the console
Write-Host "Error Counts: $errorCount"
You can use -match with a regular expression to parse the string:
This will will pull out the number up to five digits. Change the second number in
{1,5}if there will be larger numbers.