powershell reemplazar salto de línea no funciona: `n
Tengo un archivo gpx, que es simplemente un archivo xml, y quiero ejecutar un script de powershell para eliminar el nodo
xml
<trkpt lat="-33.483478" lon="150.159805">
<name> p2 </name>
<time>2021-02-23T00:00:12Z</time>
</trkpt>
<trkpt lat="-33.483852" lon="150.158309">
<name> p3 </name>
<time>2021-02-23T00:00:56Z</time>
</trkpt>
<trkpt lat="-33.483943" lon="150.157897">
<name> p4 </name>
<time>2021-02-23T00:01:07Z</time>
</trkpt>
<trkpt lat="-33.484066" lon="150.157592">
<name> p5 </name>
<time>2021-02-23T00:01:17Z</time>
</trkpt>
cada línea termina solo en LF o \n. Quiero eliminar el nodo
Sé que tengo la nueva línea correcta, o de fin de línea, porque puedo verlo claramente en Notepad++ y la expresión regular en esto funciona perfectamente <time>(.*?)</time>\n
.
Entonces uso powershell con este código:
powershell
(gc test.gpx) -replace '<time>(.*?)</time>`n', '' | Out-File -encoding ASCII processed1.gpx
toda mi investigación muestra que la nueva línea en powershell es `n
(no \n
). También he intentado `r`n
y comillas dobles "`n"
o "`r`n"
por si acaso, pero no está funcionando. He buscado preguntas similares y sus respuestas no parecen funcionar para mí.
¡Ayuda apreciada!
Ben
davy.ai
Hola Ben,
Parece que tu script de PowerShell para reemplazar el nodo
<time>
y el carácter de salto de línea con una cadena vacía debería funcionar. Sin embargo, parece que estás teniendo problemas con el carácter de salto de línea correcto.En PowerShell, el carácter de salto de línea es
n
(acento grave seguido de n), no\n
como en otros lenguajes. Así que estás en el camino correcto allí.Sin embargo, es extraño que
`n
no esté funcionando para ti. Si estás seguro de que tu archivo solo utiliza LF (\n
) como el final de línea, entonces intenta usar`r
en su lugar:Esto debería reemplazar el nodo
<time>
y el carácter CR (\r
) con una cadena vacía.Si eso no funciona, puedes intentar usar la secuencia de escape para el carácter CR, que es
`0D
:¡Espero que esto te ayude! Avísame si tienes más preguntas.
Saludos cordiales,
[Tu nombre]