标题: [文本处理] [已解决]批处理如何提取指定文本区域内特定的行内容? [打印本页]
作者: enoone1 时间: 2016-3-22 12:54 标题: [已解决]批处理如何提取指定文本区域内特定的行内容?
如何使用BAT删除{}中指定行"李四 190cm 80kg 前锋"之外的内容,得到如下结果
作者: happy886rr 时间: 2016-3-22 13:37
本帖最后由 happy886rr 于 2016-3-22 15:58 编辑
回复 1#enoone1- @echo off&setlocal enabledelayedexpansion
- set "str=李四 190cm 80kg 前锋"
- for /f "tokens=1* delims=:" %%a in ('type test.txt^|findstr /n /i /c:"!str!"') do (set #%%a=1)
- for /f "tokens=1* delims=:" %%a in ('type test.txt^|findstr /n .*') do (
- set "str=%%b"
- if "!str: =!"=="{" (set N=%%a)
- if defined #%%a (set L!N!=1)
- )
- for /f "tokens=1* delims=:" %%a in ('type test.txt^|findstr /n .*') do (
- if not defined gk (
- echo,%%b
- ) else (
- if defined #%%a (
- echo,%%b
- ) else (
- set "str=%%b"
- if "!str: =!"=="}" (
- echo,}
- set gk=<nul
- )
- )
- )
- if defined L%%a (set gk=1)
- )
- pause>nul
复制代码
作者: enoone1 时间: 2016-3-22 14:25
大侠们帮我看看 为什么这段代码- @echo off
- setlocal enabledelayedexpansion
- set keyword=李四 190cm 80kg 前锋
- set flag=0
- for /f "delims=" %%i in (test.txt) do (
- if "%%i"=="{" echo {&set flag=1
- if "%%i"=="}" set flag=0
- if "!flag!"=="0" echo %%i
- if "!flag!"=="1" echo %%i|findstr /c:"%keyword%"
- )
- pause
复制代码
flag一直0,进不到条件 为什么??
作者: WHY 时间: 2016-3-22 14:26
- @echo off
- findstr /r /c:"^[^ }]" test.txt
- findstr /r /c:"^ *李四.*前锋$" /c:"^}" test.txt
-
- pause
复制代码
作者: happy886rr 时间: 2016-3-22 14:38
回复 3# enoone1
写法不规范
作者: enoone1 时间: 2016-3-22 14:39
回复 2# happy886rr
type test.txt^|findstr /n .*好奇怪 后面那个}被过滤了,稍动下你的这段- @echo off&setlocal enabledelayedexpansion
- set "str=李四"
- for /f "tokens=1* delims=:" %%a in ('type test.txt^|findstr /n /i /c:"!str!"') do (set #%%a=1)
- for /f "tokens=1* delims=:" %%a in ('findstr /n .* test.txt') do (
- set "str=%%b"
- if not defined gk (
- echo,%%b
- ) else (
- if defined #%%a (echo,%%b)
- if "!str: =!"=="}" (
- echo,}
- set gk=<nul
- )
- )
- if "!str: =!"=="{" (set gk=1)
- )
- pause>nul
复制代码
作者: enoone1 时间: 2016-3-22 14:40
回复 5# happy886rr
大神请直接点明下吧,谢谢。
作者: happy886rr 时间: 2016-3-22 14:50
本帖最后由 happy886rr 于 2016-3-22 14:53 编辑
回复 7# enoone1
没问题呀。我测试了5000行,都完美过滤,兼容各种极端情况。
你不能就试一个条目。你条目多了,就知道了。因为你就一个条目。最后的}后边也没换行。
作者: enoone1 时间: 2016-3-22 15:01
回复 8# happy886rr
是的 最后一行文本换行问题 顺便帮我瞅瞅3楼的疑问呗,谢谢。
作者: luotexiaozh 时间: 2016-3-23 11:03
试试!- @echo off&setlocal enabledelayedexpansion
- @echo off
- for /f "delims=" %%a in ('type "test.txt" ^| findstr "李四"') do (
- echo.篮球队招募:
- echo.现有球员介绍
- echo.{
- echo. %%a
- echo.}
- )
- pause >nul 2>nul
复制代码
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |