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

[文本处理] [已解决]批处理怎么从文本中每一行里提取特定字符串?

本帖最后由 pcl_test 于 2016-12-8 17:50 编辑

如何截取log.txt文本中最末尾一行的内空。

但不需要末尾一行的全部内容,只需要 那个时间(2011-11-29 星期二 - 【21:10】:43.96 )“【”中的这一部分,如果无法截取全部时间也好。

用find试过,可是小白菜小平怎么也没截出来,故来求经。
  1. log.txt
  2. 2011-11-26 星期六 - 11:21:31.54
  3. 2011-11-26 星期六 - 16:39:07.68
  4. 2011-11-26 星期六 - 22:00:33.12
  5. 2011-11-27 星期日 - 16:20:30.87
  6. 2011-11-27 星期日 - 16:29:43.18
  7. 2011-11-27 星期日 - 20:42:15.70
  8. 2011-11-28 星期一 - 11:15:02.01
  9. 2011-11-28 星期一 - 20:37:06.82
  10. 2011-11-29 星期二 - 10:25:07.54
  11. 2011-11-29 星期二 - 16:17:08.34
  12. 2011-11-29 星期二 - 20:29:25.06
  13. 2011-11-29 星期二 - 21:00:22.50
  14. 2011-11-29 星期二 - 21:02:14.68
  15. 2011-11-29 星期二 - 21:10:43.96
复制代码
1

评分人数

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

算法和2楼是一样的,不知道还有没有更好的算法。
Hello123World 发表于 2011-11-30 12:10



    哦~ 介个运算不出来,只是一直提示 ECHO处于关闭 ……

多谢2楼。
3楼的是截出全部的时间的说~

TOP

回复 7# abcdshenji


    sed 那条可以简化一下,sed "$!d;s/.*\(..:..\).*/\1/" LOG.txt

TOP

  1. 1:
  2. sed -n "${s/.*- //;s/^\([0-5][0-9]:[0-5][0-9]\).*/\1/p}"
  3. 2:
  4. gawk -F"[ :]" "BEGIN{OFS=\":\"}END{print $4,$5}"
  5. 3:
  6. for /f %%i in ('find /v /c""^<d.txt') do set/a x=%%i-1
  7. for /f "skip=%x% tokens=4,5 delims=: " in (d.txt) do echo;%%i:%%j
复制代码
1

评分人数

    • CrLf: 乐于助人技术 + 1

TOP

是的 ,空格好像是要放到后面的

TOP

回复 4# Hello123World


    delims 处有点问题,空格必须位于最后,否则会出错的~

TOP

本帖最后由 Hello123World 于 2011-11-30 17:20 编辑
  1. @echo off
  2. For /f "tokens=4,5 delims=: " %%i in (log.txt) do Set str=%%i:%%j
  3. echo %str%
  4. pause
复制代码
算法和2楼是一样的,不知道还有没有更好的算法。多谢5楼指点。
1

评分人数

    • CrLf: 乐于助人PB + 5

TOP

  1. @echo off
  2. for /f "tokens=4,5 delims=: " %%a in (log.txt) do echo %%a:%%b
  3. pause
复制代码

TOP

  1. @echo off
  2. for /f " tokens=4 delims= " %%i in (log.txt) do set b=%%i
  3. set b=%b:~0,5%
  4. echo %b%
  5. pause>nul
复制代码
本人新手,看看行不
1

评分人数

TOP

返回列表