Verwenden Sie -replace für Rohre in Powershell


12

Ich möchte einen Ersatz testen, bevor ich ihn verwende. Daher versuche ich, einen schnellen Online-Befehl zu schreiben, um zu sehen, wie die Ausgabe lautet. Ich bin mir jedoch nicht sicher, wie die Syntax lautet. Was ich tun möchte, ist so etwas wie

cat file | -replace "a", "b"

Was ist die richtige Powershell-Syntax dafür?

Ich weiß, dass ich es auch tun $a = cat fileund dann ersetzen kann $a, aber ich möchte dies in einer Zeile halten

Antworten:


16

Dies sollte den Trick machen, es wird alle Zeilen in der Datei durchlaufen und jedes "a" durch "b" ersetzen, aber Sie müssen das anschließend wieder in einer Datei speichern

cat file | % {$_.replace("a","b")} | out-file newfile

4

Gehen Sie folgendermaßen vor, um den Powershell-Ersetzungsoperator zu verwenden (der mit regulären Ausdrücken funktioniert):

cat file.txt | % {$_ -replace "\W", ""} # -replace operator uses regex

Beachten Sie, dass der Operator -replace den Regex-Abgleich verwendet, während im folgenden Beispiel ein Nicht-Regex-Text zum Suchen und Ersetzen verwendet wird, da die String.Replace-Methode von .NET Framework verwendet wird

cat file | % {$_.replace("abc","def")} # string.Replace uses text matching
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.