poner - ¿Cómo puedo reemplazar las nuevas líneas usando PowerShell?
obtener fecha cmd (4)
Con -Raw
deberías obtener lo que esperas
Dado prueba.txt que contiene:
test
message
Quiero terminar con:
testing
a message
Creo que lo siguiente debería funcionar, pero no:
Get-Content test.txt |% {$_-replace "t`r`n", "ting`r`na "}
¿Cómo puedo encontrar y reemplazar donde lo que estoy encontrando contiene CRLF?
Puede usar "//r//n"
también para la nueva línea en powershell
. Lo he usado en la herramienta de reparación.
En mi caso, "/r/n"
no funciona, así que probé "//r//n"
como "/"
este símbolo funciona como carácter de escape en powershell
.
Según entiendo, Get-Content elimina TODAS las líneas nuevas / retornos de carro cuando pasa el archivo de texto a través de la canalización. Para hacer expresiones regulares multilínea, debes volver a combinar tu matriz de cuerdas en una cadena gigante. Yo hago algo como:
$text = [string]::Join("`n", (Get-Content test.txt))
[regex]::Replace($text, "t`n", "ting`na ", "Singleline")
Aclaración: ¡archivos pequeños solo gente! Por favor, no intente esto en su archivo de registro de 40 GB :)
Un CRLF es de dos caracteres, por supuesto, el CR y el LF. Sin embargo, `n
consiste en ambos. Por ejemplo:
PS C:/> $x = "Hello
>> World"
PS C:/> $x
Hello
World
PS C:/> $x.contains("`n")
True
PS C:/> $x.contains("`r")
False
PS C:/> $x.replace("o`nW","o There`nThe W")
Hello There
The World
PS C:/>
Creo que estás teniendo problemas con la `r
. Pude eliminar la `r
de tu ejemplo, usar `n
, y funcionó. Por supuesto, no sé exactamente cómo generó la secuencia original, así que no sé qué hay allí.