清理配置文件

问题描述:

我正在尝试写这个PS脚本,但如果有人打我一拳,我相信他们会得到免费的业力。清理配置文件

反正这里是我想带一个文件设置这样

foo.bar=Some random text is stored here 
foo.bar=Lazy maintainers make me angry 
bar.foo=Hello World! 
bar.foo=Hello World! 

主要目标是消除任何重复的条目,我有几个什么。 。 。这似乎与

Get-Content c:\list.txt | Select-Object -Unique 

很容易,但我也希望有相同的密钥识别任何冲突存储到一个单独的文件,所以我可以查看我应该保留哪些。

我还是PS新手,还没有找到一个很好的方法来做到这一点呢。

您可以使用Group-Object将具有相同密钥的项目组合在一起。然后查找其中有多个元素的组(表示重复条目)。最后,打印出那些在某处一个文件:

# raw content 
$lines = Get-Content C:\data.txt 

# package each line into a little object with properties Key and Val 
$data = $lines |%{ $key,$val = $_.Split('='); new-object psobject -prop @{Key = $key; Val = $val} } 

# group the objects by key, only keep groups with more than 1 element 
$duplicates = $data | group Key |?{$_.Count -gt 1} 

# print out each key and the different values it has been given 
$duplicates |%{ "--- [$($_.Name)] ---"; $_.Group | select -expand Val } 

结果:

--- [foo.bar] --- 
Some random text is stored here 
Lazy maintainers make me angry 
--- [bar.foo] --- 
Hello World! 
Hello World! 

可以通过管道将要Out-File如果你想在日志存储。

+0

谢谢,因为你^,今天有400多行垃圾被扔出去。^ – Dan