标题: [文本处理] [已解决]批处理怎么从文本中每一行里提取特定字符串? [打印本页]
作者: wolfan 时间: 2011-11-29 23:27 标题: [已解决]批处理怎么从文本中每一行里提取特定字符串?
本帖最后由 pcl_test 于 2016-12-8 17:50 编辑
如何截取log.txt文本中最末尾一行的内空。
但不需要末尾一行的全部内容,只需要 那个时间(2011-11-29 星期二 - 【21:10】:43.96 )“【”中的这一部分,如果无法截取全部时间也好。
用find试过,可是小白菜小平怎么也没截出来,故来求经。- log.txt
-
- 2011-11-26 星期六 - 11:21:31.54
- 2011-11-26 星期六 - 16:39:07.68
- 2011-11-26 星期六 - 22:00:33.12
- 2011-11-27 星期日 - 16:20:30.87
- 2011-11-27 星期日 - 16:29:43.18
- 2011-11-27 星期日 - 20:42:15.70
- 2011-11-28 星期一 - 11:15:02.01
- 2011-11-28 星期一 - 20:37:06.82
- 2011-11-29 星期二 - 10:25:07.54
- 2011-11-29 星期二 - 16:17:08.34
- 2011-11-29 星期二 - 20:29:25.06
- 2011-11-29 星期二 - 21:00:22.50
- 2011-11-29 星期二 - 21:02:14.68
- 2011-11-29 星期二 - 21:10:43.96
复制代码
作者: slovent 时间: 2011-11-30 00:03
- @echo off
- for /f " tokens=4 delims= " %%i in (log.txt) do set b=%%i
- set b=%b:~0,5%
- echo %b%
- pause>nul
复制代码
本人新手,看看行不
作者: CrLf 时间: 2011-11-30 12:08
- @echo off
- for /f "tokens=4,5 delims=: " %%a in (log.txt) do echo %%a:%%b
- pause
复制代码
作者: Hello123World 时间: 2011-11-30 12:10
本帖最后由 Hello123World 于 2011-11-30 17:20 编辑
- @echo off
- For /f "tokens=4,5 delims=: " %%i in (log.txt) do Set str=%%i:%%j
- echo %str%
- pause
复制代码
算法和2楼是一样的,不知道还有没有更好的算法。多谢5楼指点。
作者: CrLf 时间: 2011-11-30 12:26
回复 4# Hello123World
delims 处有点问题,空格必须位于最后,否则会出错的~
作者: xslxslxsl 时间: 2011-11-30 12:59
是的 ,空格好像是要放到后面的
作者: abcdshenji 时间: 2011-11-30 14:51
- 1:
- sed -n "${s/.*- //;s/^\([0-5][0-9]:[0-5][0-9]\).*/\1/p}"
- 2:
- gawk -F"[ :]" "BEGIN{OFS=\":\"}END{print $4,$5}"
- 3:
- for /f %%i in ('find /v /c""^<d.txt') do set/a x=%%i-1
- for /f "skip=%x% tokens=4,5 delims=: " in (d.txt) do echo;%%i:%%j
复制代码
作者: CrLf 时间: 2011-11-30 15:52
回复 7# abcdshenji
sed 那条可以简化一下,sed "$!d;s/.*\(..:..\).*/\1/" LOG.txt
作者: wolfan 时间: 2011-11-30 16:41
算法和2楼是一样的,不知道还有没有更好的算法。
Hello123World 发表于 2011-11-30 12:10
哦~ 介个运算不出来,只是一直提示 ECHO处于关闭 ……
多谢2楼。
3楼的是截出全部的时间的说~
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |