1

所以我需要删除多个txt文件中的几块txt。文件如下所示:

Header
Value
Data
   <DefaultValue>
       sdf
         asdfsdf
       asfkfkf
   </DefaultValue>
Data3
Data2
   <DefaultValue>
       sdfdffff
          asdfsasdfddf
       asfkf
   </DefaultValue>**
Dat
End

我需要删除以 DefaultValue 开头并以/DefaultValue结尾的行块

结果应如下所示:

Header
Value
Data
Data3
Data2
Dat
End

不幸的是,它不是格式正确的 XML 文件,因此无法删除 XML 节点。

有什么建议么?

4

1 回答 1

2

我用它来解决添加第三方 Join-String 函数的需要:

$filePath = '.\Desktop\new  3.txt'
$text = ""
Get-Content $filePath | % {$text += $_ + "NEWLINE"}
$text = $text -Replace "<Default.+?DefaultValue>",""
$text.Replace("NEWLINE","`r`n")

产出:

Header
Value
Data

Data3
Data2
   **
Dat
End

为了使这个重复,你想做这样的事情:

Get-ChildItem -Path C:\logs\ -Filter "*.txt" | % {
    $text = ""
    Get-Content $_.FullName | % {$text += $_ + "NEWLINE"}
    $text = $text -Replace "<Default*DefaultValue>",""
    $text.Replace("NEWLINE","`r`n") | Out-File $_.FullName -Force
}

祝你好运,备份你的数据,然后回来查看其他用户的更优雅的答案。

于 2012-08-07T17:43:05.397 回答