Usando -replace em pipes no PowerShell

12

Quero testar uma substituição antes de usá-la, portanto, estou tentando escrever um comando online rápido para ver qual é a saída. No entanto, não tenho certeza qual é a sintaxe. O que eu quero fazer é algo como

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

Qual é a sintaxe correta do PowerShell para isso?

Sei que também posso fazer $a = cat filee substituir $a, mas gostaria de manter isso em uma linha

David diz Reinstate Monica
fonte

Respostas:

16

Isso deve funcionar, ele percorre todas as linhas do arquivo e substitui qualquer "a" por "b", mas você precisará salvá-lo novamente em um arquivo posteriormente

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

Para usar o operador Powershell -replace (que funciona com expressões regulares), faça o seguinte:

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

Observe que o operador -replace usa correspondência de regex, enquanto o exemplo a seguir usaria um texto não regex para localizar e substituir, pois usa o método String.Replace do .NET Framework

cat file | % {$_.replace("abc","def")} # string.Replace uses text matching
politus
fonte