PowerShell заменяет текст между двумя строками на дату и время

#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>