/ / Excluir linhas em um arquivo txt através de um arquivo em lote até que uma sequência seja encontrada - arquivo em lote

Excluir linhas em um arquivo txt por meio de um arquivo em lotes até que uma sequência seja encontrada - arquivo em lote

Eu tenho um arquivo txt gerado. Este arquivo possui certas linhas que são supérfluas e precisam ser removidas. Preciso excluir todas as linhas até encontrar a sequência "AA BB CC DD" que estou procurando e parar de excluir e salvar como um novo arquivo.

Portanto, se o arquivo txt se parece com isto:

Good Line of data
bad line of C:DirectoryERRORmyFile.dll
Another good line of data
bad line: REFERENCE
AA BB CC DD THis is the start of valid data
Line 2
Line 3
End

Eu gostaria que o novo arquivo terminasse assim:

AA BB CC DD THis is the start of valid data
Line 2
Line 3
End

TIA.

Respostas:

0 para resposta № 1
@ECHO OFF
SETLOCAL
SET "output="
SET "string=AA BB CC DD"
(
FOR /f "USEBACKQdelims=" %%a IN ("c:batch scriptsq22188484.txt") DO (
IF NOT DEFINED output (ECHO %%a|FIND "%string%" >NUL&IF NOT ERRORLEVEL 1 SET output=Y)
IF DEFINED output ECHO(%%a
)
)>"newfile.txt"

GOTO :EOF

Eu usei um arquivo chamado q22188484.txt para meu teste; saída em newfile.txt


Correção: para permitir espaços no fiename, precisa de aspas, mas também precisa do USEBACKQ opção. newfile modificado de forma semelhante para se adequar.


0 para resposta № 2

Isso irá mostrar as linhas de where it matches the string e até 99999 lines after it, que na maioria dos casos será até o final. Adicione outro 9 a esse número para quase 1 milhão de linhas.

O termo de pesquisa é uma expressão regular, portanto, se você usar certos caracteres, pode ser necessário escapar com

Isso usa um arquivo de lote auxiliar chamado findrepl.bat - download de: https://www.dropbox.com/s/rfdldmcb6vwi9xc/findrepl.bat

Lugar, colocar findrepl.bat na mesma pasta que o arquivo em lotes ou no caminho.

type "file.txt"|findrepl "AA BB CC DD"  /o:0:99999

0 para resposta № 3
@echo off
setlocal

set "filename=C:Batch ScriptsFile Name.txt"
for /F "usebackq delims=:" %%a in ("findstr /N /C:"AA BB CC DD" "%filename%"") do set "line=%%a" & goto continue
:continue
(for /F "usebackq skip=%line% delims=" %%a in ("findstr "^" "%filename%"") do echo %%a) > newFile.txt