我对Powershell来说还是一个新手。我运行了一些编辑过的代码,这些代码应该替换文件中的某些文本,但它没有按预期工作,而是重复文件中的每一行。对于那些需要轻笑的人的代码。
除非它为文件夹中的1000多个文档做了这件事,否则不会这么糟糕,因此,我需要编写一个脚本来撤消造成的损坏。我已经用谷歌搜索了它,可以找到很多做类似事情的事情,但我无法采取任何措施并重新安排我的需求。那么有人可以帮忙吗?
这是我的原始代码:
function ChangeText{
$obj = Get-ChildItem -recurse -Include *.xml -path "************"
foreach($item in $obj)
{
(Get-Content $item.PSPath) |
Foreach-Object {
$_ -replace "Unwanted Text", "Wanted Text"
$_ -replace "Other Unwanted Text", "Wanted Text" ##This line is the line I stupidly added which caused the issue
} |
Set-Content $item.PSPath
}
}
ChangeText
示例:我需要转:
Help Me please
Help Me please
I made a mistake with the script
I made a mistake with a script
and I need your help to fix it.
and I need your help to fix it.
分为:
Help Me please
I made a mistake with the script
and I need your help to fix it.
我不能仅仅依靠删除重复的行作为原始行上的原始替换文本,因此某些文件显示重复的行,有些显示1个原始行和1个更改的行。
保留哪一行以及丢弃哪一行并不重要,因为我可以对其运行原始脚本以再次更改文本(不做我的更改)
有人可以帮忙吗?
答案 0 :(得分:5)
您可以使用模数来消除交替的线条。
$i = 0
Get-Content file.txt | Where-Object { $i % 2 -eq 0; $i++ }