[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理怎样快速获取大文件倒数行?

获取倒数行,  想获取最后1000行巨慢    一个200mb文件要半天时间
  1. @echo off
  2. for /f "tokens=1* delims=:" %%i in ('type a.txt^|findstr /n "."') do (set n=%%i)
  3. set /a n=%n%-1000
  4. more +%n% a.txt
  5. pause
复制代码
似乎需要使用倒数运算才能加快 获取最后1000行,  即从倒数开始,  而不是从头开始
使用type 如何才能加快倒数运算获取最后1000行呢 ? 谢谢指正

只知道用第三方程序sed之类的应该快点

TOP

  1. Measure-Command{$a=[io.file]::ReadAllLines(".\in.txt");$b=($a.Length-1)..($a.Length-1000)|%{$a[$_]};[io.file]::WriteAllLines(".\out.txt",$b)}
复制代码
300M文件2秒多吧

TOP

回复 2# Five66
哦哦,用type不能快了吗
那如果用sed awk那个写法更快

TOP

用tail很快,它好像是seek文件末尾逐字节向前读文件,遇到回车就计数这种,平时无脑用,具体怎么实现真不会。。。

TOP

回复 3# pd1


    嗯嗯哥哥的确实很快,      似乎顺序存放倒转了, 获取到的1000行不是按原顺序输出,

TOP

回复 6# 娜美


    你是说要从最后一行开始吗?想反过来就把-1 和-1000换一下

TOP

回复 4# 娜美

type应该是从头开始的,不能从末尾开始
没用过akw,不知道谁快

TOP

回复 7# pd1


    Yeah..哥哥的写法很灵巧哦,  学习了

TOP

回复 1# 娜美
  1. @echo off
  2. tail.exe -1000 a.txt
  3. pause
复制代码
http://bcn.bathome.net/s/tool/index.html?key=tail
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 8# Five66


    sed也很慢吧    应该没有3楼pd1哥哥的ps快

TOP

  1. @echo off
  2. for /f "delims=" %%a in ('find /c /v "" ^<a.txt') do (
  3. set /a n=%%a-1000
  4. )
  5. (for /f "useback skip=%n% delims=" %%a in ("a.txt") do (
  6. echo %%a
  7. ))>b.txt
  8. pause
复制代码
bat小白,请多指教!谢谢!

TOP

回复 10# Batcher


    这确实很快,,   但处理一些UTF16编码文件出来后会发生编码混乱字符

TOP

回复 12# 77七


    哥哥的用find比我那个快的多

TOP

回复 11# 娜美

知道总行数应该是sed快
不知道总行数ps快吧

TOP

返回列表