Removing blank or lines

I have read a number of posts on removing blank lines from output but just can’t get it to work. I have a file and I want to count the matches in the file. For example, I have “foo” in my file “logfile”.

 Select-string -path "c:\cygwin64\tmp\logfile" -pattern "foo"  | Measure-object -line | ft -hidetableheaders

   3

I have tried things like…

Select-string -path "c:\cygwin64\tmp\logfile" -pattern "foo"  | Measure-object -line | ft -hidetableheaders | where {$_ -ne " "}

Here, if I save the output to a file I get closer to the results I want…

PS C:\Program Files\Wireshark> Select-string -path "c:\cygwin64\tmp\logfile" -pattern "foo"  | Measure-object -line | ft -hidetableheaders > x.x; cat x.x | where {$_ -ne ""}
    3

Any suggestions?

get rid of ft, use select-object
format-table - for displaying to host, it should be last element of pipeline

(Select-string -path "c:\cygwin64\tmp\logfile" -pattern "foo"  | Measure-object -line).Lines
(Get-Content "c:\cygwin64\tmp\logfile"  | where {$_ -like "*foo*"}).count