Remova o texto antes de determinada string, incluindo a string usando o comando em lote

Remova o texto antes de determinada string, incluindo a string usando o comando em lote

Eu tenho um arquivo de texto que possui milhões de linhas. Quero remover todo o texto antes de uma string, test:incluindo string. Também quero remover o texto após o espaço.

Algum conteúdo do arquivo:

file1:test:src/draw/no/ind/erefe.c/gegegewg 1
filesdsd:test:src/draw/no/ind/reryeryrey.c/jhrtjtrj 1
fileskdk:sdsD:test:abc/disp/no/ind/ryretyrey.txt/Display::Restrict 20

Saída desejada:

src/draw/no/ind/erefe.c/gegegewg
src/draw/no/ind/reryeryrey.c/jhrtjtrj
abc/disp/no/ind/ryretyrey.txt/Display::Restrict

Eu tenho o código abaixo que remove o texto /do arquivo e também ecoa a linha na linha de comando como está echo.

for /f "tokens=1 delims=/" %a in (abc.txt) do (echo %a >> newfile.txt)

Quero modificar o código acima para obter a saída desejada mencionada acima. Mas sem imprimir linhas no cmd, pois leva muito tempo.

Responder1

Aí está o seu comando:

cut -d " " -f1 file.txt | sed -e '1,$s/^\(.*\):test:\(.*\)$/\2/' > new_file.txt

ou se você pode modificar o arquivo original:

sed -i '1,$s/^\(.*\):test:\(.*\) .*$/\2/' file.txt

Atualização: não percebi que a pergunta era para a plataforma Windows. No entanto, também existe o sed para Windows, que pode ser instalado de várias maneiras:

https://stackoverflow.com/questions/127318/is-there-any-sed-like-utility-for-cmd-exe

informação relacionada