일괄 명령을 사용하여 문자열을 포함한 특정 문자열 앞의 텍스트 제거

일괄 명령을 사용하여 문자열을 포함한 특정 문자열 앞의 텍스트 제거

수백만 줄의 텍스트 파일이 있습니다. 문자열을 포함하여 문자열 앞의 모든 텍스트를 제거하고 싶습니다 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 플랫폼에 관한 것이라는 것을 알지 못했습니다. 그러나 여러 가지 방법으로 설치할 수 있는 Windows용 sed도 있습니다.

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

관련 정보