Board logo

标题: [文本处理] 批处理怎样提取txt文本中包含指定字符串的行? [打印本页]

作者: wwddhmh    时间: 2014-8-13 15:08     标题: 批处理怎样提取txt文本中包含指定字符串的行?

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

本帖最后由 wwddhmh 于 2014-8-2 01:41 编辑

只要BAT。其他模块的不需要

如题:我的指定路径下的txt文本   D:\test\记录.txt    内容如下 剪切文本为:D:\test\通过.txt   
黄小明-1号通过
戴小军-2号
胡志明-3号通过
李小燕-4号
杜明-5号通过
黄东明-6号通过
李红-7号通过
谢立鸿-8号
黄东明-9号通过
习志-10号
胡淘-11号
李小萧-12号通过

当然文本不只这几行,下面还有无数行就不一一例举,我想通过BAT,实现从上往下,剪切带有“通过”的每行全部文字到指定的文本里。意思就是说,把"记录.txt"文本里通过的人员,剪切到"通过.txt"文本里。重要提示一点是,“"通过.txt"这个文本是个有通过人员的,我希望每次运行批处理不要改动原来的文本内用,就好比,文本"通过.txt"本来是记录着1 3 5 号通过的,我运行的时候把6 9 12 剪切进去的时候不要改动以前的排列那么 文本下来的就是  1号 3号 5号 6号 9号 12号 这样的排列
作者: hfg1977    时间: 2014-8-13 15:54

  1. findstr "通过" D:\test\记录.txt>>D:\test\通过.txt
复制代码

作者: CrLf    时间: 2014-8-13 17:01

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in (记录.txt 通过.txt) do (
  3.    set str=%%a
  4.    for /f "tokens=1,2 delims=号" %%b in ("!str:*-=!") do (
  5.       if %%c==通过 set n=0000%%b&set 通过[!n:~-4!]=%%a
  6.    )
  7. )
  8. (for /f "delims==" %%a in ('set 通过[') do echo !%%a!)>tmp.txt
  9. move /y tmp.txt 通过.txt
  10. pause
复制代码

作者: pcl_test    时间: 2016-7-18 18:35

第三方
  1. gawk "/通过\s*$/{print}" "D:\test\记录.txt">"D:\test\通过.txt"
复制代码





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