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

David sagt Reinstate Monica
quelle

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
Shinjijai
quelle
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
politus
quelle