找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 33825|回复: 6

[文本处理] [已解决]批处理如何提取/获取txt文本中两个指定行之间的行内容?

[复制链接]
发表于 2016-5-3 17:37:28 | 显示全部楼层 |阅读模式
本帖最后由 hlzj88 于 2016-5-4 22:37 编辑

如题,假设
aaa
123
456
789
bbb
文本大小不限,行数不限,aaa与bbb是唯一的,aaa bbb可能是一行的唯一,也可能是一句中的一个词,且他们的上下都有另外的行。求提取123 456 789。

评分

参与人数 1PB -6 收起 理由
pcl_test -6 未按版规发帖

查看全部评分

发表于 2016-5-3 18:15:14 | 显示全部楼层
本帖最后由 WHY 于 2016-5-4 09:30 编辑
  1. @echo off & setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in (a.txt) do (
  3.     set "s=%%i"
  4.     if not "!s:bbb=!" == "!s!" (set flag=) else if defined flag echo;!s!
  5.     if not "!s:aaa=!" == "!s!" set "flag=1"
  6. )
  7. pause
复制代码
  1. @if (0)==(0) echo off
  2. cscript //nologo //e:jscript "%~f0" < a.txt > b.txt
  3. pause & exit
  4. @end

  5. var arr = WSH.StdIn.ReadAll().match(/aaa.*\n([\s\S]+)\r?\n.*bbb/i);
  6. if(arr) WSH.Echo(arr[1])
复制代码

评分

参与人数 1技术 +1 收起 理由
hlzj88 + 1 技术+热心

查看全部评分

发表于 2016-5-3 18:16:47 | 显示全部楼层
本帖最后由 WHY 于 2016-5-4 09:31 编辑
  1. gawk "BEGIN{IGNORECASE=1}{if($0~/bbb/){a=0}else if(a)print;if($0~/aaa/)a=1}" a.txt > b.txt
复制代码
发表于 2016-5-3 19:24:29 | 显示全部楼层
回复 1# hlzj88
for /f "delims=" %%i in ('type "%~f1"')do if /i not "%%i"=="aaa"  if /i not "%%i"=="bbb"  (echo,%%i)
 楼主| 发表于 2016-5-4 07:14:11 | 显示全部楼层
回复 4# /zhqsystem/zhq
回复 2# WHY
谢谢WHY 和/zhqsystem/zhq 劳神给出代码,经测试,WHY的代码都可以完成最前面问题的处理,/zhqsystem/zhq的代码在有多余上下行时,仅去掉aaa,bbb。

由于我对问题描述不到位,已在顶楼增加描述,希望能得到继续帮助
发表于 2016-5-4 09:32:00 | 显示全部楼层
回复 5# hlzj88


    已修改
 楼主| 发表于 2016-5-4 22:39:27 | 显示全部楼层
回复 3# WHY

谢谢了,,忙的一塌糊涂,基本发问就没管了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 18:36 , Processed in 0.028338 second(s), 13 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表