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

[文本处理] [已解决]批处理怎样提取文本中第一行的其中一段数字字符?

这是需要提取的字符的内容,文件名称为origin.log:
  1. [9404.208] LateGame Full Render Score     , 1983,     NumDrawCallsPerFrame    ,0
  2. [9404.208] LateGame NoShadow Render Score , 2770,     NumDrawCallsPerFrame    ,0
  3. [9404.208] LateGame No Render Score       , 5500,     NumDrawCallsPerFrame    ,0
复制代码
我需要提取其中第一行 "LateGame Full Render Score , " 和 ", NumDrawCallsPerFrame" 之间的数值,上面为例就是1983,提取后的数值存放到:number.txt


试了这个指令:


grep.exe -m 1 -o "LateGame Full Render Score\"[0-9.]\+\"" "origin.log" >> number.txt

不过的出来的是一个空白文件。

不知道应该修改哪里呢?

[ 本帖最后由 edison 于 2010-10-18 18:04 编辑 ]
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

  1. @echo off
  2. type nul >number.txt
  3. for /f "tokens=6 delims=, " %%a in (origin.log) do (
  4.     >>number.txt echo,%%a
  5. )
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

  1. sed -r "s/.*([0-9]{4}).*/\1/" origin.log | more >number.txt
复制代码

TOP

回复 2楼 的帖子

刚才试了这个,生成的还是一个空白文件 @.@

TOP

回复 3楼 的帖子

这个可以把三行的数字都提取出来成为:
  1. 1983
  2. 2770
  3. 5500
复制代码
不过我前面说过,是只要第一行的,不知道 SED 要加什么参数才能实现呢?

TOP

@echo off
for /f "delims=, tokens=2" %%i in (origin.log) do echo %%i >> tiqu.txt

TOP

回复 6楼 的帖子

这个依然是空白。。。为啥呢 :)

TOP

@echo off
(for /f "usebackq delims=, tokens=2 " %%a in (test.txt) do echo %%a)>>1.txt
pause
我也只能弄完出来,不会只把第一行的显示出来,水平有限!!!!

TOP

usebackp不要

TOP

回复 4楼 的帖子

请检查你的origin.log文件是不是ANSI编码格式
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 5楼 的帖子

  1. sed -r "1!d; s/.*([0-9]{4}).*/\1/" origin.log | more >number.txt
复制代码
1

评分人数

TOP

回复 10楼 的帖子

我查看了,Ultraedit 状态栏那里显示打开的文件是 dos 格式,应该就是 ANSI 吧。

TOP

回复 11楼 的帖子

谢谢 CUer,这个指令实现了^^/

再次感谢各位的帮助。

TOP

返回列表