バッチコマンドを使用して文字列を含む特定の文字列の前のテキストを削除する

バッチコマンドを使用して文字列を含む特定の文字列の前のテキストを削除する

数百万行のテキスト ファイルがあります。文字列を含む文字列の前のすべてのテキストを削除したいです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

関連情報