У меня есть длинный файл конфигурации, в котором мне нужно вытащить подстроку, отредактировать там какой-то контент и заменить исходный контент и сохранить файл. Я совершенно новый с PowerShell, но я думаю, что последние две части, которые я могу сделать. Проблема, с которой я столкнулась, - это совпадение с регулярным выражением.Powershell Regex для подстроки над несколькими строками между двумя символами
[SECTION1]
SETTING1=ABC
SETTING2=DEF
SETTING3=GHI
[SECTION2]
SETTING1=ABC
ANOTHERSETTING=XYZ
[SECTION3]
SOMESETTING=DFH
FINALSETTING=OWA
Я проверил регулярное выражение на RegExr и он хорошо работает там, но у меня нет никакой радости при попытке передать, что в сценарий PowerShell.
(^\[SECTION2\](\n.+$){2})
То, что я хотел бы сделать, это найти «[section2]», и не совпадают всё, вплоть до следующего экземпляра «[». В настоящее время я сопоставляю «[SECTION2]» и две строки новой строки, но хотел бы совместить до следующей квадратной скобки.
Я пробовал пару команд для запуска регулярного выражения, но, похоже, ничего не возвращает мне ничего. Например:
Select-String -Path 'PATH_TO_FILE' -Pattern '(^\[SECTION2\](\n.+$){2})'
Я делаю что-то принципиально неправильно?
Я отредактировал мой оригинальный пост. Я подозреваю, что я неправильно понимаю реализацию, поэтому любая помощь приветствуется. Я попытался использовать регулярное выражение, которое вы предоставили, но это тоже не дало результатов. –
@MikeWhitehead см. Мое редактирование. – briantist
Я пробовал ваше предложение, но оно ничего не возвращает. Get-Content вытаскивает файл, так что первая часть фактически просматривает файл, но Select-String, похоже, не находит совпадения. Есть ли способ, например, совместить все между [SECTION2] и квадратной скобкой открытия [SECTION3]? –