Я хочу найти часть текста в большом XML-файле и хотеть заменить некоторым другим текстом. Размер файла составляет приблизительно (50 ГБ). Я хочу сделать это в командной строке. Я смотрю на Powershell и хочу знать, может ли он обработать большой размер. Также я хотел бы к знанию синтаксиса для выхода из ключевых операторов в powershell. Я - новичок PowerShell
В настоящее время я пробую что-то вроде этого, но этому не нравится он
Get-Content C:\File1.xml | Foreach-Object {$_ -replace "xmlns:xsi=\"http:\/\/www\.w3\.org\/2001\/XMLSchema-instance\"", ""} | Set-Content C:\File1.xml
Текст, который я хочу заменить, является xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" с пустой строкой "".
Вопросы
Спасибо
Это не нравится, потому что вы не можете читать из файла и записывать в него одновременно с помощью Get-Content / Set-Content. Я рекомендую использовать временный файл, а затем в конце переименовать file1.xml в file1.xml.bak и переименовать временный файл в file1.xml.
. \ Myscript.ps1
, и если он принимает параметры, то c: \ users \ joe \ myscript.ps1 c: \ temp \ file1.xml
. Обычно для регулярных выражений я бы использовал одинарные кавычки, если вам не нужно ссылаться на переменные PowerShell. Тогда вам нужно беспокоиться только об экранировании регулярных выражений, а не об экранировании PowerShell. Если вам нужно использовать двойные кавычки, то символ обратной галочки - это escape-символ в двойных кавычках, например. "` $ p1 установлен на $ ps1 ". В вашем примере одинарное цитирование упрощает ваше регулярное выражение (примечание: косые черты не являются метасимволами в регулярном выражении):
'xmlns: xsi = "http://www.w3.org/2001/XMLSchema-instance"'
Абсолютно вы хотите транслировать это, поскольку 50 ГБ не поместятся в памяти. Однако это создает проблему, если вы обрабатываете построчно. Что делать, если текст, который вы хотите заменить, разделен на несколько строк?
Управляющий символ в строках PowerShell - это обратная кавычка (`), а не обратная косая черта (\). Я бы привел пример, но обратная кавычка также используется в вики-разметке. : (
Единственное, что вам следует избегать, это кавычки - точки и тому подобное должно быть нормально без.