Использование -relace на каналах в powershell

12

Я хочу протестировать замену, прежде чем использовать ее, поэтому я пытаюсь написать быструю онлайн-команду, чтобы увидеть, что получится. Тем не менее, я не уверен, что синтаксис. То, что я хочу сделать, это что-то вроде

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

Каков правильный синтаксис PowerShell для этого?

Я знаю, что я тоже могу сделать $a = cat fileи потом заменить $a, но я бы хотел оставить это в одной строке

Дэвид говорит восстановить Монику
источник

Ответы:

16

Это должно сработать, оно пройдет по всем строкам в файле и заменит любое «a» на «b», но потом вам нужно будет сохранить его обратно в файл

cat file | % {$_.replace("a","b")} | out-file newfile
shinjijai
источник
4

Чтобы использовать оператор Powershell -replace (который работает с регулярными выражениями), сделайте следующее:

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

обратите внимание, что оператор -replace использует сопоставление с регулярным выражением, тогда как в следующем примере будет использоваться поиск и замена текста без регулярного выражения, поскольку он использует метод String.Replace в .NET Framework

cat file | % {$_.replace("abc","def")} # string.Replace uses text matching
politus
источник