标题: [文本处理] [已解决]批处理如何提取/获取txt文本中两个指定行之间的行内容? [打印本页]
作者: hlzj88 时间: 2016-5-3 17:37 标题: [已解决]批处理如何提取/获取txt文本中两个指定行之间的行内容?
本帖最后由 hlzj88 于 2016-5-4 22:37 编辑
如题,假设
aaa
123
456
789
bbb
文本大小不限,行数不限,aaa与bbb是唯一的,aaa bbb可能是一行的唯一,也可能是一句中的一个词,且他们的上下都有另外的行。求提取123 456 789。
作者: WHY 时间: 2016-5-3 18:15
本帖最后由 WHY 于 2016-5-4 09:30 编辑
- @echo off & setlocal enabledelayedexpansion
- for /f "delims=" %%i in (a.txt) do (
- set "s=%%i"
- if not "!s:bbb=!" == "!s!" (set flag=) else if defined flag echo;!s!
- if not "!s:aaa=!" == "!s!" set "flag=1"
- )
- pause
复制代码
- @if (0)==(0) echo off
- cscript //nologo //e:jscript "%~f0" < a.txt > b.txt
- pause & exit
- @end
-
- var arr = WSH.StdIn.ReadAll().match(/aaa.*\n([\s\S]+)\r?\n.*bbb/i);
- if(arr) WSH.Echo(arr[1])
复制代码
作者: WHY 时间: 2016-5-3 18:16
本帖最后由 WHY 于 2016-5-4 09:31 编辑
- gawk "BEGIN{IGNORECASE=1}{if($0~/bbb/){a=0}else if(a)print;if($0~/aaa/)a=1}" a.txt > b.txt
复制代码
作者: /zhqsystem/zhq 时间: 2016-5-3 19:24
回复 1# hlzj88
for /f "delims=" %%i in ('type "%~f1"')do if /i not "%%i"=="aaa" if /i not "%%i"=="bbb" (echo,%%i)
作者: hlzj88 时间: 2016-5-4 07:14
回复 4# /zhqsystem/zhq
回复 2# WHY
谢谢WHY 和/zhqsystem/zhq 劳神给出代码,经测试,WHY的代码都可以完成最前面问题的处理,/zhqsystem/zhq的代码在有多余上下行时,仅去掉aaa,bbb。
由于我对问题描述不到位,已在顶楼增加描述,希望能得到继续帮助
作者: WHY 时间: 2016-5-4 09:32
回复 5# hlzj88
已修改
作者: hlzj88 时间: 2016-5-4 22:39
回复 3# WHY
谢谢了,,忙的一塌糊涂,基本发问就没管了
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |