你知道Windows系统上类似于Unix中的统计单词数命令wc的程序吗?

39

我快速搜索得到了tawbaware wc,但它不接受标准输出作为输入流,这意味着我不能在DOS会话中使用管道。

注意:

我不能安装cygwin或使用powershell(否则可以使用'|foreach-object {(get-content $_).count}')。

unxutilsgnuwin32软件包可能具有此功能...


3
wc是coreutils中的一部分(您提供的gnuwin32发行版)。 - florin
10个回答

33

更简单的方法是使用find /c命令。例如:

netstat -an | find /c "ESTABLISHED"

find /c: 仅显示包含字符串的行数统计结果。


这里使用 find 的方式很有趣。+1 - VonC

31

正在下载它,但是快速(太快了)调查页面http://gnuwin32.sourceforge.net/packages.html并没有让我相信wc包含在该发行版中... - VonC
4
安装并与 | 一起使用。 它可以正常工作(前提是同时存在libiconv2.dll和libintl3.dll)。谢谢! - VonC

10
对于在Windows上的Unix工具,您的选择如下:
- msys - 类似于UnixTools,最初只是与mingw(gcc的本地版本)配套使用的一些构建工具,现在几乎拥有所有的cygwin工具。 - cygwin - 几乎包含Unix的所有内容,安装复杂,需要一个dll来提供Unix API。不同版本的cygwin.dll混合使用可能会出现问题。 - Unixtools - 不包括cygwin提供的所有工具,但是可以进行本地编译。 - ch - 包含几乎所有Unix工具,可以进行本地编译。还包括一个包含“c”解释器的shell。标准版本是免费的,但不是开源的。 - uwin - 由ATT免费提供,包括korn shell(如果您喜欢这种东西)。 - mks - 商业版Unix工具。鉴于已经有免费版本可用,价格相对较高。

谢谢您提供的列表。对于任何未来类似的请求,我一定会参考它。+1 - VonC

5

尝试:

find /c /v "~any string that will never occur~"

这个命令会计算出所有不包含搜索字符串的行数。测试中发现一个问题,它似乎无法计算文件末尾的空白行。


3

很抱歉我不同意,但unxutils确实有一个wc.exe

试一下吧!

干杯,


你说得对,我的初始搜索太匆忙了。+1 但我会选择coreutils。 - VonC

3

我的unxutils包含有字数统计功能:

C:\Java\vssWorkspace\java\portlets_core>wc -l C:\Users\malp\AppData\Local\Temp__portlets41366.html 79717 C:\Users\malp\AppData\Local\Temp__portlets41366.html

此外,unxutils页面指出wc.exe也可用。您是否在寻找wc.exe无法处理的内容?


你说得对,我的初始搜索太匆忙了。+1 但我会选择coreutils。 - VonC

2
这里有另外两种(纯Windows CMD)计算git日志行数的方法:
set n=0
for /f %a in ('git log --oneline') do set /a n=n+1

或者:

git log --online | find /v /c ""

第一种方法的优点在于你可以将值保存在环境变量中以便后续操作。但是对于大文件的处理可能会比较慢。

是的,这很有趣,但并不是对原问题的回答。可能应该作为@jeffdrake的回答的评论。在评论方面的声望限制可能会让人感到痛苦... - 感觉到疼痛的东西... ;) - I'm with Monica

0

还有WinXs 4.2,它是共享软件,所以您可以看看它是否能够满足您的需求。

您可以安装一个脚本语言来完成这个任务吗?这可能有些过度,但如果能够轻松完成工作,那就值得一试...


有趣,但不免费。至于脚本语言,启动时间与单个wc.exe相比太慢了(我们的PC已经5-6年了...;-)) - VonC

0

我发现了这个帖子,被其中使用Windows内置工具模拟wc的创新解决方案所吸引。这激发了我对字符计数的需求,以便我可以在与Web表单字段的最大字符警告作斗争时获胜。

如果您想要得到字节计数的wc -c,您可以使用Windows中未列在HELP命令中的DOS实用程序DEBUG。字符计数应等于字节计数减去换行符的数量乘以一个换行符的大小,Unix为一个换行符('\n'),或两个字符,回车+换行符('\cr'和'\lf'或'\0Dh''0Ah'用于DOS纯文本文件)。

Char Count = Byte Count - (Line Count * sizeof("\n"))

要做到这一点,请打开一个命令行窗口(开始->运行->打开:“cmd”),在纯文本文件上运行debug并检查包含加载文件长度的CX寄存器:

Debug [pathname] -rcx CX [filelength in hex] : -q

然后在文件上运行find:

找到 /v /c "notlikelystring" ---------- [文件路径]: [行数]
然后应用公式。

-1

getgnuwin32 可以方便地下载和安装 GnuWin32(其中一定包含 wc 实用程序)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接