I have a huge files with e-mail addresses and I would like to count how many of them are in this file. How can I do that using Windows\' command line ?
I have tried
Why not simply using this (this determines the number of lines containing (at least) an @
char.):
find /C "@" "mail.txt"
Example output:
---------- MAIL.TXT: 96
To avoid the file name in the output, change it to this:
find /C "@" < "mail.txt"
Example output:
96
To capture the resulting number and store it in a variable, use this (change %N
to %%N
in a batch file):
set "NUM=0"
for /F %N in ('find /C "@" ^< "mail.txt"') do set "NUM=%N"
echo %NUM%
I found this on the net. See if it works:
findstr /R /N "^.*certainString.*$" file.txt | find /c "@"
Very simple solution:
grep -o "@" mail.txt | grep -c .
Remember a dot at end of line!
Here is little bit more understandable way:
grep -o "@" mail.txt | grep -c "@"
First grep selects only "@" strings and put each on new line.
Second grep counts lines (or lines with @).
The grep utility can be installed from GnuWin project or from WinGrep sites. It is very small and safe text filter. The grep is one of most usefull Unix/Linux commands and I use it in both Linux and Windows daily. The Windows findstr is good, but does not have such features as grep.
Installation of the grep in Windows will be one of the best decision if you like CLI or batch scripts.