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

[文本处理] BAT如何在文本中提取特殊定字符最后一次出现的所在行的内容?

想从a.txt中提取“第”字最后一次出现所在行的后6个字符,a.txt内容如下:
……
0        11:40:47                初始化完成,热键模式为:增强模式
0        11:40:49                启动脚本:Hw.Q,创建线程:5832
0        11:40:49                线程 5832 执行结束
0        11:42:32                初始化完成,热键模式为:增强模式
0        11:42:35                启动脚本:Hw.Q,创建线程:5560
0        11:42:35                线程 5560 执行结束
0        11:54:16                初始化完成,热键模式为:增强模式
0        11:54:17                启动脚本:Hw.Q,创建线程:4436
0        11:54:17                线程 4436 执行结束
0        11:55:21                初始化完成,热键模式为:增强模式
0        11:55:24                启动脚本:Hw.Q,创建线程:1728
1728        11:55:24        Hw.Q,第12行:        131455
1728        11:55:27        Hw.Q,第18行:        131388
1728        11:55:29                已停止日志记录

想提取“131388”这个数字,多谢指教 !!

学习了,非常感谢!

TOP

  1. gawk "/第/{n=$NF}END{print n}" a.txt
复制代码

TOP

  1. @echo off
  2. for /f "tokens=4" %%a in ('findstr "第" a.txt') do set "str=%%a"
  3. echo,%str%
  4. pause>nul
复制代码
***共同提高***

TOP

本帖最后由 batman 于 2013-9-24 19:52 编辑
  1. @echo off
  2. for /f "delims=" %%a in ('findstr "第" a.txt') do set "str=%%a"
  3. echo,%str:~-6%
  4. pause>nul
复制代码
***共同提高***

TOP

楼主初学批处理,Powershell对于我来说生了点,版主能不能再教教我用 For和findstr怎么写?

TOP

本帖最后由 PowerShell 于 2013-9-24 14:37 编辑
  1. #powershell代码
  2. $文件 = Get-Content 'e:\pscode\a.txt'
  3. for ($i=-1;$i -gt $(0 - $文件.length);$i--)
  4. {
  5. if($文件[$i] -like "*第*")
  6. {
  7. $目标行 = $文件[$i]
  8. $结果 = $目标行.substring(($目标行.length - 6),6)
  9. $结果  | Out-File  'e:\pscode\b.txt'
  10. break
  11. }
  12. }
复制代码
测试通过
脚本是写给人看的,是写给用户看的,而不是写给机子看的
用户能看懂、会修改的脚本,才是好脚本。
写易懂的powershell脚本帮人解决问题,进而让用户学会自渔,吾所愿也

TOP

把结果写入b.txt

TOP

返回列表