Ich habe eine Textdatei (eigentlich XML), die ich über eine Befehlszeile ändern möchte. Mit anderen Worten, als Teil einer Windows-Batch-Operation möchte ich eine Zeichenfolge suchen (in diesem Fall @@@@, die ein Zeichen verwendet, das sonst nirgendwo in der Datei vorkommt) und sie dann durch etwas Einfaches ersetzen, beispielsweise ein Datum „18.08.11“.
Gibt es eine Art „grep“, „perl“ oder eine andere Möglichkeit, um in kurzer Zeit einfach die Zeichenfolge zu ersetzen? Dies muss wiederum über die Befehlszeile erfolgen, da ich den Vorgang automatisieren möchte.
Ich habe übrigens Active State PERL auf meinem PC.
Antwort1
Um alle Vorkommen von findthis
durch replaceto
in der Datei zu ersetzen example.txt
, gehen Sie wie folgt vor:
perl -pi -e 's/findthis/replaceto/g' example.txt
Antwort2
An den Antworten, die Sie bereits haben, ist nichts auszusetzen, aber um die Optionen zu ergänzen, möchte ich darauf hinweisen, dass Sie Powershell auch installiert haben, wenn Sie Windows 7 verwenden. Oder es könnte auch unter XP/Vista installiert sein, wenn Sie das möchten. Dann:
$foo = gc C:\Path\To\File.txt; $foo | %{$_.replace('@@@@', '8/1/11')} | Out-File C:\Path\To\File.txt
Antwort3
Sie scheinen grep zu kennen. Sie können dasselbe Dienstprogramm verwenden, dasverfügbar für Windows. Sie müssen es nicht installieren, sondern nur in den Pfad einfügen (oder in denselben Ordner, in dem die Batchdatei ausgeführt wird). Wenn Sie es verwenden, vergessen Sie nicht, die „Abhängigkeiten“ sowie die Binärdateien herunterzuladen (oder laden Sie die ausführbare Installationsdatei herunter, wenn Sie so etwas mögen).
Alternativ können Sie die VBS-Sprache (Skriptsprache für Windows XP) verwenden und ein Skript erstellen, um eine Zeichenfolge in einer Datei zu ersetzen (Weitere Einzelheiten finden Sie unter diesem Link.) und Ausführen des Skripts über die Befehlszeile mitcscript