2012-08-07 24 views
0

所以我需要在多个txt文件中删除几块txt。该文件是这样的:使用PowerShell删除文本块

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

我需要删除与默认值开始的行块,并与/默认值

最终结果应该是这样的:

Header 
Value 
Data 
Data3 
Data2 
Dat 
End 

不幸的是,它不是一个正确形成的XML文件,所以XML节点删除将无法正常工作。

有什么建议吗?

回答

2

我用这个来解决需要添加第三方加入字符串函数:

$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 
} 

祝你好运,把你的数据备份起来,并检查从另一个更优雅的答案用户。

+0

你太棒了!非常感谢! – user1582582 2012-08-07 17:53:30

+0

随时接受答案,如果它的工作。 – 2012-08-07 18:01:59