Ich habe eine Textdatei mit Millionen von Zeilen. Ich möchte den gesamten Text vor einer Zeichenfolge test:
einschließlich Zeichenfolge entfernen. Außerdem möchte ich Text nach Leerzeichen entfernen.
Einige Inhalte aus der Datei:
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
Gewünschte Ausgabe:
src/draw/no/ind/erefe.c/gegegewg
src/draw/no/ind/reryeryrey.c/jhrtjtrj
abc/disp/no/ind/ryretyrey.txt/Display::Restrict
Ich habe den unten stehenden Code, der Text /
aus der Datei entfernt und auch die Zeile in der Befehlszeile widerspiegelt echo
.
for /f "tokens=1 delims=/" %a in (abc.txt) do (echo %a >> newfile.txt)
Ich möchte den obigen Code ändern, um die oben genannte gewünschte Ausgabe zu erhalten. Aber ohne Zeilen auf cmd zu drucken, da dies viel Zeit in Anspruch nimmt.
Antwort1
Hier ist Ihr Befehl:
cut -d " " -f1 file.txt | sed -e '1,$s/^\(.*\):test:\(.*\)$/\2/' > new_file.txt
oder wenn Sie die Originaldatei ändern können:
sed -i '1,$s/^\(.*\):test:\(.*\) .*$/\2/' file.txt
Update: Mir ist nicht aufgefallen, dass die Frage für die Windows-Plattform war. Es gibt jedoch auch sed für Windows, das auf verschiedene Arten installiert werden kann:
https://stackoverflow.com/questions/127318/gibt es ein sed-ähnliches Dienstprogramm für cmd-exe?