Board logo

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

作者: tamicer    时间: 2013-9-24 12:06     标题: 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”这个数字,多谢指教 !!
作者: tamicer    时间: 2013-9-24 12:08

把结果写入b.txt
作者: PowerShell    时间: 2013-9-24 14:36

本帖最后由 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. }
复制代码
测试通过
作者: tamicer    时间: 2013-9-24 15:38

楼主初学批处理,Powershell对于我来说生了点,版主能不能再教教我用 For和findstr怎么写?
作者: batman    时间: 2013-9-24 19:48

本帖最后由 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
复制代码

作者: batman    时间: 2013-9-24 19:52

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

作者: DAIC    时间: 2013-9-24 20:57

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

作者: tamicer    时间: 2013-9-25 12:31

学习了,非常感谢!




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