powershell - 需要有关 power shell 脚本的帮助以过滤列上的 CSV 并在新工作表中显示过滤后的数据
问题描述
我是 power shell 的新手,但学习速度很快。到目前为止,我已经制作了一个脚本,它从 URL 获取数据并在桌面上创建一个 csv,然后我从 CSV 中删除第一行并将其作为 csv2 保存到桌面。我想过滤列并将过滤后的数据复制到新工作表中。我可能必须声明要查找过滤的数组值,我需要帮助。到目前为止,我已经制作了以下脚本: -
\此脚本用于下载资产分析服务器列表及其相应的站点地址和国家/地区,并将输出保存到 C:\Users\vtarwani\Desktop 上的 CSV。
Invoke-WebRequest -Uri "Link to URL" -OutFile "C:\Users\tarwaniv\Desktop\file1.csv"
$import = get-content "C:\Users\tarwaniv\Desktop\file1.csv"
$import | select-Object -Skip 1 | Set-Content "C:\Users\tarwaniv\Desktop\file2.csv"
Import-csv -Path "C:\Users\tarwaniv\Desktop\file2.csv" -Header "#Active Servers", "Street Address" , "City", "Country" | Where-Object {$_.Country -eq "UNITED STATES"}
解决方案
我同意@Theo 和@Olaf。这很难遵循。希望您能够构建这样的示例:
$WebFile = "C:\Users\tarwaniv\Desktop\file1.csv"
$Out_Dir = "C:\Users\tarwaniv\Desktop\"
$Headers = "#Active Servers", "Street Address" , "City", "Country"
Invoke-WebRequest -Uri "Link to URL" -OutFile $WebFile
Import-csv -Path $WebFile -Header |
Select-Object -Skip 1 |
Group-Object -Property Country |
ForEach-Object{
$OutFile = $Out_Dir + $_.Name
$_.Group | Export-Csv -Path $OutFile -NoTypeInformation
}
注意:-Skip
在 Select 对象上使用参数应该跳过来自的第一条记录Import-Csv
。
用于Group-Object
在国家/地区分组。这将输出它自己的对象,但 name 属性是您分组的对象,在本例中是 Country,并且 Group 属性中包含原始对象。所以我们可以使用这两个属性来命名一个输出文件,然后将对象导出到新的 Csv 文件。
如果您只想输出来自初始文件的列的子集。将-Property
参数添加到Select-Object
命令中,例如:
Select-Object -Skip 1 -Property <PropertiesToSelect>
注意:您可以声明一个类似于$Headers
上面的属性数组。
如果您想对其他列进行顶级过滤,并假设它们包含在命令中,则只需在子句Select-Object
上构建。Where-Object
请记住,我无法真正对此进行测试,因此请将其视为一个起点。这就是说让我知道结果如何。谢谢。
推荐阅读
- node.js - Mongoose 聚合:如何使用 ejs 显示聚合结果
- sql - 有没有办法在左连接中实现计数
- javascript - 如何将字符串中每个单词的首字母大写?
- mysql - Sequelize 不支持 MySQL 8 身份验证协议,我不知道如何更改此协议
- javascript - 反应空白文本节点不能作为子节点出现
- python - 从数据框中选择其特定列值等于另一个数据框的列的行
- python - 实现 k-means 聚类算法时,np.linalg.norm 是否应该平方?
- arrays - 当您在循环中迭代数组时,如何知道数组中是否没有更多值
- netlogo - 如何创建与新创建的海龟的链接
- javascript - 得到`