【问题标题】:Delete multiple lines in a text file using Powershell使用 Powershell 删除文本文件中的多行
【发布时间】: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


【解决方案1】:

由于您似乎在使用正则表达式时遇到了问题,让我们试试看是否可以做到。 (这里有很多关于你做错了什么的话题,所以我不想讨论这个,而且要记住,大多数时候有不止一种方法可以做某事。)

你有几行文本,你想为每一行决定是否保留它,像这样:

保留[选项] 保持 DuplicateUncoveredDiff = 1 保持 KeptPatternMaxCount = 7 保持 [6107] 控制标志 = 10 版本=1532 保持 [6900] 保持 CtrlFlag = 10 保持版本=1532 保持 保持......这里还有更多文字

所以假设我们逐行浏览文本,我们需要一个“保持”标志,默认为$true,当遇到"[6107]" 时翻转为$false,然后再次返回$true当下一个"[" 出现时。然后可以使用此标志来过滤行。

我们可以使用Where-Object cmdlet 来跟踪标志并过滤行:

$keep = $true
Get-Content yourtextfile.txt | where { 
  if ( $_.StartsWith("[6107]") ) {
    $keep = $false
  } elseif ( -not $keep -and $_.StartsWith("[") ) {
    $keep = $true
  }
  $keep
}

Get-Content 已经为您将文本文件分成几行,因此我们可以将它们直接通过管道传递给Where-Object

注意$keep 如何转换为$false 并保持$false 直到下一行以"[" 开头。

您可以将该权限的结果通过管道传输到Set-Content 以将其写入新文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-15
    • 2021-11-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-28
    • 2021-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多