2012-08-27 3 views
0

특정 행을 검색 한 다음 txt에서 13 행을 삭제하기 위해 배치 파일이 필요한 txt 파일이 있습니다. 파일. txt 파일에서 행을 검색하고 배치 파일에서 다음 13 행을 삭제합니다.

과 txt 파일의 예

은 다음과 같습니다

<section1> 
line1 
line2 
line3 

<section2> 
line1 
line2 
line3 
line4 
line5 

<section3> 
line1 
line2 
line3 
line4 
line5 
line6 
line7 
line8 

etc. 

내가 검색해야 라인 <section2>하고 다음 삭제를 다음

<section2> 
line1 
line2 
line3 
line4 
line5 

그래서 함께 종료 :

<section1> 
line1 
line2 
line3 

<section3> 
line1 
line2 
line3 
line4 
line5 
line6 
line7 
line8 

etc. 

다른 섹션 다음에 몇 줄을 편집해야합니다 (예 : 편집). <section3>line1editline1

말을 따라서는 <section3> 문자열을 찾아 1 호선은 아래

<section3> 
editline1 
line2 
line3 
line4 
line5 
line6 
line7 
line8 

덕분에이 같은

+0

awk를 사용할 것입니다. [Windows 용 GNU Awk] (http://gnuwin32.sourceforge.net/packages/gawk.htm) 설명 : _ 여러 종류의 작업이 텍스트 파일을 사용하여 반복적으로 발생합니다. 특정 줄을 빼내 나머지는 버릴 수 있습니다. 또는 특정 패턴이 나타날 때마다 변경해야하지만 나머지 파일은 그대로 두어도됩니다. – lessthanideal

답변

0
@echo off 
    set fnam="%~1" 
    set outnam="%~dpn1.out" 
    set search4="%~2" 
    set section=. 
    for /f "tokens=*" %%x in ('type %fnam%') do call :work %fnam% "%%x" 
    MOVE /Y %outnam% %fnam% 
goto :eof 

:work 
    set "line=%~2" 
    if "%line:~0,1%%line:~-1%"=="<>" (
    if "%section%" neq "." echo.>> %outnam% 
    set "section=^%line:~,-1%^>" 
    set "line=^%line:~,-1%^>" 
) 
    if NOT "%section:~1,-2%>"==%search4% echo %line%>> %outnam% 

를 호출 표시 변경합니다 :

section filename.txt "<section2>" 
관련 문제