我嘗試遵循此處和此處提供的答案。
在“ test1.txt”檔案中,我有以下內容:
20220421
20220422
20220423
20220424:
222
我想替換內容,使它們在輸出檔案“ test2.txt”中看起來像這樣:
20220421:
20220422:
20220423:
20220424:
222
我試圖用以下代碼來實作這一點:
(Get-Content '.\test1.txt').replace('^\d{8}$', '^\d{8}:$') | Out-File '.\test2.txt'
但是,我在“ test2.txt”中得到了以下內容,而不是預期的結果:
20220421
20220422
20220423
20220424:
222
有人可以解釋為什么我沒有達到預期的結果嗎?
uj5u.com熱心網友回復:
您沒有使用正則運算式支持-replace運算子,而是在替換中使用正則運算式而不是正確的替換模式。
您可以使用
(Get-Content '.\test1.txt') -replace '^(\d{8}):?\r?$', '$1:') | Out-File '.\test2.txt'
正^(\d{8}):?\r?$則運算式匹配將它們捕獲到組 1 中的八位數字,然后是一個可選的冒號、一個可選的 CR,然后斷言字串位置的結尾。
替換是第 1 組值 ( $1) 加上冒號字符。
uj5u.com熱心網友回復:
Powershell 將 $ 和 ^ 視為整個內容的開頭和結尾,而不是單獨的行。
這不是您想要的 - 我無法在替換字串中獲得換行符。
@" 20220421 20220422 20220423 20220424: 222 "@ -replace "(\d{8})\n",'$1:'
換行符不起作用
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/460597.html
