找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 69610|回复: 21

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

[复制链接]
发表于 2023-8-7 21:08:04 | 显示全部楼层 |阅读模式
获取倒数行,  想获取最后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行呢 ? 谢谢指正
发表于 2023-8-7 21:20:34 | 显示全部楼层
只知道用第三方程序sed之类的应该快点
发表于 2023-8-7 21:44:33 | 显示全部楼层
  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秒多吧
 楼主| 发表于 2023-8-7 21:46:37 | 显示全部楼层
回复 2# Five66
哦哦,用type不能快了吗
那如果用sed awk那个写法更快
发表于 2023-8-7 21:48:33 | 显示全部楼层
用tail很快,它好像是seek文件末尾逐字节向前读文件,遇到回车就计数这种,平时无脑用,具体怎么实现真不会。。。
 楼主| 发表于 2023-8-7 21:57:33 | 显示全部楼层
回复 3# pd1


    嗯嗯哥哥的确实很快,      似乎顺序存放倒转了, 获取到的1000行不是按原顺序输出,
发表于 2023-8-7 21:59:23 | 显示全部楼层
回复 6# 娜美


    你是说要从最后一行开始吗?想反过来就把-1 和-1000换一下
发表于 2023-8-7 22:04:39 | 显示全部楼层
回复 4# 娜美

type应该是从头开始的,不能从末尾开始
没用过akw,不知道谁快
 楼主| 发表于 2023-8-7 22:05:43 | 显示全部楼层
回复 7# pd1


    Yeah..哥哥的写法很灵巧哦,  学习了
发表于 2023-8-7 22:06:49 | 显示全部楼层
回复 1# 娜美
  1. @echo off
  2. tail.exe -1000 a.txt
  3. pause
复制代码
http://bcn.bathome.net/s/tool/index.html?key=tail
 楼主| 发表于 2023-8-7 22:07:17 | 显示全部楼层
回复 8# Five66


    sed也很慢吧    应该没有3楼pd1哥哥的ps快
发表于 2023-8-7 22:11:47 | 显示全部楼层
  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
复制代码
 楼主| 发表于 2023-8-7 22:14:14 | 显示全部楼层
回复 10# Batcher


    这确实很快,,   但处理一些UTF16编码文件出来后会发生编码混乱字符
 楼主| 发表于 2023-8-7 22:22:27 | 显示全部楼层
回复 12# 77七


    哥哥的用find比我那个快的多
发表于 2023-8-7 22:37:09 | 显示全部楼层
回复 11# 娜美

知道总行数应该是sed快
不知道总行数ps快吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 15:37 , Processed in 0.021804 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表