2013-04-29 202 views
2

我對批處理腳本非常陌生。我對批處理腳本沒有太多的瞭解。批處理文件將特定行從一個文本文件複製到另一個文本文件

我的疑問是如何從文本文件只複製一些行到其他文本文件。

說我FILE.TXT是

This is sample file. 
I want copy this line. 
Also this line. 
But not this line. 

我想用他們的行號,因爲可能會更改爲複製線2和3,但不是。

這muchI做了至今:

@ECHO OFF 
SET InFile=abc.txt 
SET OutFile=Output.txt 
IF EXIST "%OutFile%" DEL "%OutFile%" 
SET TempFile=Temp.txt 
IF EXIST "%TempFile%" DEL "%TempFile%" 

IF EXIST "%OutFile%" DEL "%OutFile%" 

FOR /F "tokens=*" %%A IN ('FINDSTR "I want" "%InFile%"') DO (
    ECHO.%%A> "%TempFile%" 
    ECHO.%TempFile%>>"%OutFile%" 
REM CALL :RemovePrecedingWordA "%%A" 
    ) 
FOR /F "tokens=*" %%A IN ('FINDSTR " Also this" "%InFile%"') DO (
    ECHO.%%A> "%TempFile%" 
    ECHO.%TempFile%>>"%OutFile%" 
REM CALL :RemovePrecedingWordA "%%A" 
    ) 

但它不工作。請幫忙。

回答

5

你可以使用/ G:選項FINDSTR,基本上做到

findstr /g:pattern.txt %InFile% > %OutFile% 

其中pattern.txt是(在你的例子)

I want 
Also this 

這是假設你可以寫findstr正則表達式所有你想要複製的行。

1

您也可以使用sed來實現此目的。某些行(在此例2和3)被複制如下:

sed -n -e 2p -e 3p input.txt > output.txt 

如果希望複製的線的段(從第2行的所有行至第10行),那麼你可以使用:

sed -n -e 2,10p input.txt > output.txt 

或者你也可以使用特定的線路和段組合:

sed -n -e 2,10p -e 15p -e 27p input.txt > output.txt 
+0

的問題指出:「但不是用他們的行號,因爲可能會改變。」 – Stephan 2015-08-19 14:39:03

相關問題