#string #powershell #replace
#строка #powershell #заменить
Вопрос:
Я пытался выяснить, как сделать следующее в PowerShell, но без особой удачи.
Я хочу заменить все между messageid> И
Я начал писать некоторый код, как показано ниже, может кто-нибудь направить меня по правильному пути — очень ценю это.
Get-Content -path C:test.txt -raw -replace pattern = "(?s)messageid>(.*?)</messageid"'<message>*</messageid>' (Get-Date).ToString('dddd dd-MM-yyyy HH:mm:ss') | Set-Content -path c:test.txt
Комментарии:
1. Каков фактический исходный текст?
2. Эй, Дуг, что-нибудь на этот счет: <идентификатор сообщения>9348399343-38493-Det-100</MessageId>
Ответ №1:
Этот пример должен помочь вам достичь желаемого результата.
$text = @'
Some line of text
random text <messageid> who knows </messageid> some other text
another line
'@
$text -replace '(?s)(?<=messageid>). ?(?=</messageid)',(Get-Date).ToString('dddd dd-MM-yyyy HH:mm:ss')
Some line of text
random text <messageid>Monday 12-10-2020 21:54:04</messageid> some other text
another line
Редактировать
И применяется к примеру из вашего комментария
'<MessageID>9348399343-38493-Det-100</MessageID>' -replace '(?s)(?<=messageid>). ?(?=</messageid)',(Get-Date).ToString('dddd dd-MM-yyyy HH:mm:ss')
<MessageID>Monday 12-10-2020 21:58:56</MessageID>