Удалить текст перед определенной строкой, включая строку, с помощью пакетной команды

Удалить текст перед определенной строкой, включая строку, с помощью пакетной команды

У меня есть текстовый файл, в котором миллионы строк. Я хочу удалить весь текст перед строкой, test:включая строку. Также хочу удалить текст после пробела.

Некоторое содержимое файла:

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

Желаемый результат:

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

У меня есть код ниже, который удаляет текст после /файла, а также выводит строку в командной строке, как это сделано в echo.

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

Я хочу изменить код выше, чтобы получить желаемый вывод, указанный выше. Но без печати строк в cmd, так как это занимает много времени.

решение1

Вот ваша команда:

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

или если вы можете изменить исходный файл:

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

Обновление: Я не заметил, что вопрос был для платформы Windows. Однако есть также sed для Windows, который можно установить несколькими способами:

https://stackoverflow.com/questions/127318/есть-ли-sed-подобная-утилита-для-cmd-exe

Связанный контент