通过powershell从文件中删除几行

时间:2013-09-19 19:42:44

标签: powershell

如果我想用一些字符串键(例如“foo”)从文档行中删除,我使用:

$content = Get-Content 'C:/fake.txt' | Where-Object {$_ -notmatch 'foo'}
$content | Out-File 'C:/fake.txt'

但现在我已经提交了这个计划:

...
<data name="BLABLA" xml:space="preserve">
   <value>some data here</value>
</data>
...
<data name="BLABLA22" xml:space="preserve">
   <value>some data</value>
   <comment>some comment</comment>
</data>

我需要删除关键字“BLABLA”这三行

<data name="BLABLA" xml:space="preserve">
   <value>some data here</value>
</data>

对于关键的“BLABLA2”这四行

<data name="BLABLA22" xml:space="preserve">
   <value>some data</value>
   <comment>some comment</comment>
</data>

我怎样才能通过PowerShell做到这一点?

1 个答案:

答案 0 :(得分:4)

如果要删除整个节点,那么以下内容应该可以帮到您。

# load the file into xml
[xml]$dom = gc file.xml

# find the node
$nod = $dom.SelectSingleNode("/root/data[@name='BLABLA']")

# remove the node from the parent
$nod.ParentNode.RemoveChild($nod)

# save the xml
$dom.save("file.xml")

我认为您的数据看起来有点像这样:

<root>
    <data name="BLABLA" xml:space="preserve">
       <value>some data here</value>
    </data>
    <data name="BLABLA22" xml:space="preserve">
       <value>some data</value>
       <comment>some comment</comment>
    </data>
</root>