使用powershell删除文本块

时间:2012-08-07 17:04:23

标签: powershell

所以我需要删除多个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节点。

有什么建议吗?

1 个答案:

答案 0 :(得分: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
}

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