【发布时间】:2017-10-19 16:03:12
【问题描述】:
我有一个如下的文本文件:
[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
有没有办法删除线 [Group 2]?请注意,不能使用行号或范围,因为此文本文件不是静态的。
所以我做了什么,我解析了所有字符串,用“@”替换了换行符,并使用 -like 运算符查找值 6107,将内容复制到另一个文本文件。但我想要实现的是不选择组,而是取消选择它 - 选择除 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"
}
请帮忙。蒂亚!
【问题讨论】:
-
在发布之前,您是否尝试在 StackOverflow 上搜索您的问题?你写的时候有没有点击建议的类似问题?
-
是的,我做到了。但是我在使用正则表达式时遇到了麻烦,并且不太熟悉它。尽管有很多关于它的教程,但不要指望新手可以轻松获得它。希望你能理解。谢谢
标签: powershell