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

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

本帖最后由 hlzj88 于 2016-5-4 22:37 编辑

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

评分人数

目的,学习批处理

本帖最后由 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

评分人数

TOP

本帖最后由 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
复制代码

TOP

回复 1# hlzj88
for /f "delims=" %%i in ('type "%~f1"')do if /i not "%%i"=="aaa"  if /i not "%%i"=="bbb"  (echo,%%i)
这么好的论坛你上哪找,运行测试环境为6.1.7601-64
注:请遵守互联网信息安全,勿用于非法用途

TOP

回复 4# /zhqsystem/zhq
回复 2# WHY
谢谢WHY 和/zhqsystem/zhq 劳神给出代码,经测试,WHY的代码都可以完成最前面问题的处理,/zhqsystem/zhq的代码在有多余上下行时,仅去掉aaa,bbb。

由于我对问题描述不到位,已在顶楼增加描述,希望能得到继续帮助
目的,学习批处理

TOP

回复 5# hlzj88


    已修改

TOP

回复 3# WHY

谢谢了,,忙的一塌糊涂,基本发问就没管了
目的,学习批处理

TOP

返回列表