Quiero encontrar un fragmento de texto en un archivo xml grande y quiero reemplazarlo por otro texto. El tamaño del archivo es de alrededor (50 GB). Quiero hacer esto en línea de comando. Estoy mirando Powershell y quiero saber si puede manejar el tamaño grande. También me gustaría saber la sintaxis para escapar de los operadores clave en powershell. Yo soy muy novato PowerShellBuscar y reemplazar en un archivo grande
Actualmente estoy tratando algo como esto pero no le gusta
Get-Content C:\File1.xml | Foreach-Object {$_ -replace "xmlns:xsi=\"http:\/\/www\.w3\.org\/2001\/XMLSchema-instance\"", ""} | Set-Content C:\File1.xml
El texto quiero reemplazar es xmlns: xsi = "http: //www.w3. org/2001/XMLSchema-instance " con cadena vacía" ".
Preguntas
- Can PowerShell manejan grandes archivos
- Como llamar en el guión PowerShell desde la línea de comandos
- La sintaxis para escapar clave operadores en PowerShell y la lista de operadores principales en PowerShell.
- No deseo que la sustitución ocurra en la memoria y prefiera la transmisión suponiendo que no llevará al servidor a sus rodillas.
- ¿Hay otros enfoques que puedo tomar (Diferente herramientas/estrategia?)
Gracias
@Keith, que realmente confía en PowerShell;) Me gustaría tal vez preocúpate por OutOfMemoryException porque 50gb es lo suficientemente grande como para recolectar pequeñas pérdidas de memoria ... solo una conjetura. Personalmente usaría 'File.Open' directamente y trabajaría con una transmisión y compararía manualmente (sin expresiones regulares). – stej
¿Y no debería uno usar algún tipo de API XML para hacer esto? Solo un pensamiento. No sé si SAX o StAX están disponibles en .NET; Yo trabajo muy raramente con XML, pero hacer un reemplazo de cadena suena mal para esto. – Joey
.NET tiene un lector de estilo de cursor de solo reenvío (XmlReader/XmlTextReader), un mecanismo de extracción que es un poco diferente al método de inserción de SAX. Es un poco tedioso, pero es una buena forma de hacerlo cuando todo el documento Xml no cabe en la memoria. –