Pat*_*ryk 12 windows string command-line file find
我有一个带有电子邮件地址的大文件,我想知道它们中有多少是这个文件.如何使用Windows命令行执行此操作?
我试过这个,但它只打印匹配的行.(顺便说一句:所有电子邮件都包含在一行中)
findstr /c:"@" mail.txt
Ada*_*m S 16
使用你拥有的东西,你可以通过一个管道输出结果find.我已经看到过这样的东西.
findstr /c:"@" mail.txt | find /c /v "GarbageStringDefNotInYourResults"
Run Code Online (Sandbox Code Playgroud)
因此,您要计算findstr命令产生的行,其中没有垃圾字符串.有点黑客,但它可以为你工作.或者,只需使用find /c您关心的字符串即可.最后,你提到了每行一个地址,所以在这种情况下上面的工作,但每行多个地址,这打破了.
为什么不简单地使用它(它确定包含(至少)一个@字符的行数):
find /C "@" "mail.txt"
Run Code Online (Sandbox Code Playgroud)
输出示例:
Run Code Online (Sandbox Code Playgroud)---------- MAIL.TXT: 96
为了避免输出中的文件名,请将其更改为以下内容:
find /C "@" < "mail.txt"
Run Code Online (Sandbox Code Playgroud)
输出示例:
Run Code Online (Sandbox Code Playgroud)96
要捕获结果编号并将其存储在变量中,请使用此代码(更改%N为%%N批处理文件):
set "NUM=0"
for /F %N in ('find /C "@" ^< "mail.txt"') do set "NUM=%N"
echo %NUM%
Run Code Online (Sandbox Code Playgroud)
非常简单的解决方案:
grep -o "@" mail.txt | grep -c .
Run Code Online (Sandbox Code Playgroud)
记住行尾的一个点!
这是更容易理解的方式:
grep -o "@" mail.txt | grep -c "@"
Run Code Online (Sandbox Code Playgroud)
首先 grep 只选择“@”字符串并将每个字符串放在新行上。
第二个 grep 计算行(或带有 @ 的行)。
该grep的实用程序可以通过安装GnuWin项目或WinGrep网站。它是非常小且安全的文本过滤器。grep 是最有用的 Unix/Linux 命令之一,我每天都在 Linux 和 Windows 中使用它。Windows findstr很好,但没有 grep 之类的功能。
如果您喜欢 CLI 或批处理脚本,在 Windows 中安装grep将是最好的决定之一。
| 归档时间: |
|
| 查看次数: |
50618 次 |
| 最近记录: |