2012-08-27 48 views
0

我有一些txt文件,我需要一個批處理文件來搜索特定的行,然後刪除該行和隨後的txt文件中的13行文件。在一個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. 

我還需要在其他部分之後編輯一些行,例如編輯line1<section3>editline1

所以它會找到<section3>串並改變1號線出現如下

<section3> 
editline1 
line2 
line3 
line4 
line5 
line6 
line7 
line8 

感謝

+0

我會爲此使用awk。從[GNU Awk for Windows](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>" 
相關問題