Board logo

标题: [文本处理] 批处理如何查找txt文本里包含指定字符串的行并输出第一个和最后一个匹配行 [打印本页]

作者: ltx1993    时间: 2016-7-6 14:01     标题: 批处理如何查找txt文本里包含指定字符串的行并输出第一个和最后一个匹配行

本帖最后由 pcl_test 于 2016-7-6 15:18 编辑

比如  
a:1
fga
a:2
a:3
afdsfa
a:4
我搜索a 只想输出 a:1 a:4
作者: pcl_test    时间: 2016-7-6 14:18

搜索a,是匹配每行开头是a还是包含a
作者: ltx1993    时间: 2016-7-6 14:43

回复 2# pcl_test


    包含a就行 中间的都是随便打的
作者: pcl_test    时间: 2016-7-6 14:54

本帖最后由 pcl_test 于 2016-7-6 14:55 编辑
  1. @echo off
  2. for /f "delims=" %%a in ('more +9 "%~f0"^|find "a"') do (
  3.     if not defined #尾 set "#头=%%a"
  4.     set "#尾=%%a"
  5. )
  6. echo;%#头%
  7. echo;%#尾%
  8. pause&exit
  9. ::举个栗子
  10. a:1
  11. fga
  12. a:2
  13. a:3
  14. afdsfa
  15. a:4
复制代码

作者: ltx1993    时间: 2016-7-6 15:08

回复 4# pcl_test


    并不行啊= =
作者: pcl_test    时间: 2016-7-6 15:09

  1. @echo off
  2. findstr "a" "文本.txt">$1.tmp
  3. set /p #头=<$1.tmp
  4. sort /+65535 $1.tmp>$2.tmp
  5. set /p #尾=<$2.tmp
  6. echo;%#头%
  7. echo;%#尾%
  8. del /q /f $*.tmp
  9. pause
复制代码

作者: pcl_test    时间: 2016-7-6 15:11

回复 5# ltx1993

直接运行不行?你自己没改对怪谁
作者: ltx1993    时间: 2016-7-6 15:11

就比如txt里面是这些 我想搜索并输出calendar_time第一个和最后一个方便计算时间
  //[calendar_time:2016-07-04 01:10:01.023  system_uptime:22184244]
:Sending Touch (ACTION_DOWN): 01162.0,415.0)
:Sending Touch (ACTION_UP): 0:(1161.4484,419.31702)
    //[calendar_time:2016-07-04 01:10:11.544  system_uptime:22194765]
:Sending Touch (ACTION_DOWN): 0:(474.0,566.0)
:Sending Touch (ACTION_UP): 0:(467.8971,565.43835)
    //[calendar_time:2016-07-04 01:10:17.834  system_uptime:22201055]
:Sending Touch (ACTION_DOWN): 0:(450.0,64.0)
:Sending Touch (ACTION_UP): 0:(405.73944,166.1908)
    //[calendar_time:2016-07-04 01:10:26.761  system_uptime:22209982][url][/url]
作者: ltx1993    时间: 2016-7-6 15:25

回复 7# pcl_test


    可以找到最后一个= =
作者: pcl_test    时间: 2016-7-6 15:54

回复 9# ltx1993

把你原文件发网盘或打包发附件发出来




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