在文本文件中多行我有一個文本文件,如下圖所示:刪除使用PowerShell
[Option]
DuplicateUncoveredDiff = 1
KeptPatternMaxCount = 7
[6107]
CtrlFlag = 10
Version =1532
[6900]
CtrlFlag = 10
Version =1532
...and some more text here
我試圖找到一種方法來刪除一個組下多行。當我說組時,我指的是[]括號內的字符串以及它下面的任何字符。
例如,這是第1組:
[Option]
DuplicateUncoveredDiff = 1
KeptPatternMaxCount = 7
組2:
[6107]
CtrlFlag = 10
Version =1532
有一種方法,以除去線[第2組]?請注意,由於此文本文件不是靜態的,因此不能使用行號或範圍。
所以我做了什麼,我解析了所有的字符串,用「@」替換了換行符,並使用類似操作符查找值,將內容複製到另一個文本文件。但我想實現的不是選擇組,而是取消選擇它 - 選擇除6107組之外的所有其他行。我試着玩替換,在6107之後和第一次出現之前放置通配符,但它刪除了所有內容。
$content = Get-Content $filePath\$fileName -Raw
$content -replace "`n|`r", "@" | Set-Content $localPath\$newFile
$newContent = Get-Content $localPath\$newFile
if($newContent -like "*6107*")
{
$newContent -replace ".*6107]","" -replace "\[.*","" | Set-Content
"$folderPath\6107.txt"
}
請幫忙。 TIA!
您是否在發佈之前嘗試在StackOverflow上搜索您的問題?當你寫這個問題時,你碰到過這個建議的類似問題嗎? – Clijsters
是的,我做到了。但是我在使用正則表達式時遇到了麻煩,而且不太熟悉它。雖然有很多關於它的教程,但不要指望新手輕易獲得它。希望你能理解。謝謝 – ninpot18