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