我是PowerShell的新手,我在解决如何从一个或多个.csv
文件创建时遇到了一个问题,每个文件在一个列中为每个值找到一个文件,其中包含该值中的所有行。
让我用一个例子来解释:
我有此来源CSV:
我需要为文件中的每个App创建一个文件。脚本的输出应该是这样的。
App1.csv
App2.CSV
对于出现在原始CSV中的每个应用,该文件都是一个新文件,其中所有行均具有该值,在本例中为应用。
我想在PowerShell中做到这一点,以便可以自动化,我尝试使用组对象,然后使用值进行foreach,但没有运气。我什至没有遥不可及的找到解决方案。
谢谢您,祝您编程愉快!
答案 0 :(得分:1)
我没有最优雅的解决方案,但是可以用,我检查了您的文件,但请您下次将文件内容上载为文本,以便于复制。 不要忘记在代码中选择定界符(我通常使用';')
$some=Import-Csv "D:\testdir\file1.csv" -Delimiter ';'|
Sort-Object header2|
Group-Object -Property header2
foreach ($i in $some){
$i.Group|
Export-Csv -Delimiter ';' -Encoding UTF8 -NoTypeInformation -Force -Path ("D:\testdir\"+$i.Name+".csv")
}
答案 1 :(得分:0)
导入CSV。
从包含应用名称的列中选择所有唯一值。
浏览应用名称,并获取与应用名称匹配的所有行。
导出为CSV。
$Path = "./MyFile.csv"
$DestinationDir = "./"
$CSV = Import-CSV -Path $Path
$AppNames = $CSV.H2 | Select -Unique
Foreach ($App in $AppNames)
{
$DestinationPath = Join-Path -ChildPath $App -Path $DestinationDir
$CSV | Where {$_.H2 -eq $APP} | Export-Csv -NoTypeInformation -Path $DestinationPath
}
示例CSV:
H1,H2,H3,H4
Data,App1,Data,Data
Data,App1,Data,Data
Data,App1,Data,Data
Data,App2,Data,Data
Data,App2,Data,Data