Попробуйте выполнить следующее:
(Get-Content output.txt) -replace '<img (?=.+\.mp4)', '<source ' |
Set-Content output.txt
Это может быть сделано более надежным, но работает с образцом ввода.
Вышеприведенное опирается на:
(положительное) прогнозное утверждение ((?=...)
), которое совпадает с частью ввода, не считая его частью общего соответствия и, следовательно, не заменяя его.
-replace
прохождение любых несоответствующих входов через как есть.
Что касается то, что вы пытались :
Byвыдает результат, только если условие if ($_ -match ".mp4")
верно, вы фактически пропускаете строки ввода, которые не соответствуют .mp4
.