Board logo

标题: [文本处理] 【已解决】批处理如何最快的方式统计文本有多少行? [打印本页]

作者: elec    时间: 2014-7-14 14:13     标题: 【已解决】批处理如何最快的方式统计文本有多少行?

本帖最后由 elec 于 2014-7-14 20:40 编辑

例如
1.txt有500行。统计出结果后 set /a n=500
2.txt有2300行。统计出结果后 set /a n=2300

这样的。
作者: DAIC    时间: 2014-7-14 14:20

  1. @echo off
  2. for /f %%a in ('type a.txt ^| find /c /v ""') do (
  3.     set "RowNum=%%a"
  4. )
  5. echo,%RowNum%
  6. pause
复制代码

作者: elec    时间: 2014-7-14 14:40

回复 2# DAIC


    计算13W行的文本大概用了12.47秒。。还有更快的方法吗?
作者: Batcher    时间: 2014-7-14 14:58

下载一个 grep.exe 试试
  1. grep -Fc "" 1.txt
复制代码

作者: elec    时间: 2014-7-14 17:44

不过我想将计算出的结果赋值给一个变量,能做到吗?
用管道?还是写入文件再读取?

有没有解决办法。。谢谢了!!
作者: storm8    时间: 2014-7-14 18:28

  1. @echo off
  2. for /f %%i in ('grep -Fc "" 1.txt') do set lines=%%i
  3. echo %lines%
  4. pause
复制代码

作者: Batcher    时间: 2014-7-14 20:41

回复 6# storm8


    这个耗时几秒?
作者: elec    时间: 2014-7-14 23:50

本帖最后由 elec 于 2014-7-15 00:03 编辑

回复 7# Batcher


    第三方的工具速度不用说。不过用wc -l a.txt会更快一些
    测试a.txt  100W行  167M

    wc命令:0.11s
    grep命令:0.67s
    批处理:6.95s
作者: storm8    时间: 2014-7-15 16:29

回复 7# Batcher


    这个代码就是用4楼的方法,加点处理解决5楼的问题。起赋值作用。时间应该跟4楼差不多

grep --help
-c, --count               print only a count of matching lines per FILE

作者: elec    时间: 2014-7-15 19:58

回复 9# storm8

    这个也行!!
  1. grep -c ".*" a.txt
复制代码

作者: Batcher    时间: 2014-7-15 21:49

回复 10# elec


    这种写法比4楼那种快多少?




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2