在文本文件中多行我有一个文本文件,如下图所示:删除使用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