使用批次命令刪除特定字串之前的文字(包括該字串)

使用批次命令刪除特定字串之前的文字(包括該字串)

我有一個有數百萬行的文字檔。我想刪除字串之前的所有文本,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

相關內容