Ich möchte einfach in einer Protokolldatei lesen, eine Suche und ersetzen, und dann schreiben Sie die Änderungen in die gleiche Logdatei.Perl: Loop durch eine Datei und ersetzen
Was ist der beste Weg, dies in Perl zu tun?
Ich möchte einfach in einer Protokolldatei lesen, eine Suche und ersetzen, und dann schreiben Sie die Änderungen in die gleiche Logdatei.Perl: Loop durch eine Datei und ersetzen
Was ist der beste Weg, dies in Perl zu tun?
Diese oft mit einem Einzeiler getan wird:
perl -pi.bak -e "s/find/replace/g" <file>
Notiere die -i.bak
Teil - Dies erstellt eine Sicherungsdatei mit der Erweiterung .bak
. Wenn Sie ohne Netz spielen möchten, können Sie dies tun, um die vorhandene Datei ohne Sicherung zu überschreiben:
perl -pi -e "s/find/replace/g" <file>
oder Sie verwenden können sed
(ich weiß ... Sie gebeten, über Perl):
sed -i 's/find/replace/g' <file>
Die Art und Weise, wie sed Regeln für reguläre Ausdrücke behandelt, ist ... anders als Perl, um es gelinde auszudrücken. – GJTorikian
Aber warum kann ich keine Rücksicherungen verwenden? Wie Perl -pi -e "s/foo (. *) Bar/bar $ 1foo /" tezt2 funktioniert nicht .. –
Ihre Shell ist wahrscheinlich die Zeichenfolge korrumpieren. Versuchen Sie, Ihr "" mit "s" zu ersetzen, damit das * nicht erweitert wird. –
Danke das ist es! –