Board logo

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

作者: edison    时间: 2010-10-17 21:40     标题: [已解决]批处理怎样提取文本中第一行的其中一段数字字符?

这是需要提取的字符的内容,文件名称为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 编辑 ]
作者: Batcher    时间: 2010-10-17 21:47

  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. )
复制代码

作者: CUer    时间: 2010-10-17 21:52

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

作者: edison    时间: 2010-10-17 22:37     标题: 回复 2楼 的帖子

刚才试了这个,生成的还是一个空白文件 @.@
作者: edison    时间: 2010-10-17 22:53     标题: 回复 3楼 的帖子

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

@echo off
for /f "delims=, tokens=2" %%i in (origin.log) do echo %%i >> tiqu.txt
作者: edison    时间: 2010-10-18 11:19     标题: 回复 6楼 的帖子

这个依然是空白。。。为啥呢 :)
作者: WUYAN520    时间: 2010-10-18 11:44

@echo off
(for /f "usebackq delims=, tokens=2 " %%a in (test.txt) do echo %%a)>>1.txt
pause
我也只能弄完出来,不会只把第一行的显示出来,水平有限!!!!
作者: WUYAN520    时间: 2010-10-18 11:45

usebackp不要
作者: Batcher    时间: 2010-10-18 11:52     标题: 回复 4楼 的帖子

请检查你的origin.log文件是不是ANSI编码格式
作者: CUer    时间: 2010-10-18 11:54     标题: 回复 5楼 的帖子

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

作者: edison    时间: 2010-10-18 17:09     标题: 回复 10楼 的帖子

我查看了,Ultraedit 状态栏那里显示打开的文件是 dos 格式,应该就是 ANSI 吧。
作者: edison    时间: 2010-10-18 17:26     标题: 回复 11楼 的帖子

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

再次感谢各位的帮助。




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