清理配置文件
问题描述:
我正在尝试写这个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
如果你想在日志存储。
谢谢,因为你^,今天有400多行垃圾被扔出去。^ – Dan