Pipe na linha de comando

1

No blog link Encontrei um substituto para o sed implementado como script do PowerShell. Eu não quero depender da instalação de qualquer variante sed de terceiros. Por isso, usaria a solução do link acima:

SED-ish

cat somefile.txt | %{$_ -replace "expression","replace"}

Infelizmente, isso não funciona dessa maneira

powershell cat somefile.txt | %{$_ -replace "expression","replace"}

desde que | seja interpretado por cmd.exe. Como eu faço este bom PowerShell Script para um one-liner, usado em um arquivo de lote?

    
por harper 18.03.2014 / 13:10

2 respostas

1

Execução de comandos do PowerShell em um script em lote

Você pode usar o parâmetro -Command , assim:

powershell -NoLogo -NoProfile -ExecutionPolicy Bypass -Command "cat somefile.txt | %{$_ -replace 'expression\",\"replace\"}"

Observação Na seqüência de caracteres de comando " precisa ser escapado usando \" (ou substituído por ' ), e % tem que ser escapado com %% .

Leitura adicional

por 18.03.2014 / 13:34
2

tente isto:

powershell -Command "cat somefile.txt | %{$_ -replace 'expression','replace'}"
    
por 18.03.2014 / 13:26