从 CSV 文件中读取并将行中的每个值保存在变量中
Read from CSV file and save every value in a row in a variable
我有这个 CSV 文件。看起来像这样:
ID,Name,Surname,Energy, Sugar
1,Kim,Jansen,4343,45
2,Tim,Brown,5332,42
3,Paul,Redford,2345,36
我的脚本中有一个 Read-Host
语句要求提供 ID。一旦我有了这个 - 假设它是 2 - 我现在想导入这个 CSV 文件并读取 ID=2 的行并将姓名、姓氏、能量和糖保存在变量中。
我试过 ForEach-Object
等,但它打印了所有 ID 列并仅保存最后一行。
如何仅在 if
条件为真时获取行值?
只需使用 Where-Object
过滤器:
$id = Read-Host ...
$row = Import-Csv 'input.csv' | Where-Object { $_.Id -eq $id }
您可以将 CSV 的字段存储在单独的变量中:
$name = $row.Name
$surname = $row.Surname
$energy = $row.Energy
$sugar = $row.Sugar
但这通常既不需要也不推荐。只需使用对象变量的属性(本例中为 $row
)。
我有这个 CSV 文件。看起来像这样:
ID,Name,Surname,Energy, Sugar 1,Kim,Jansen,4343,45 2,Tim,Brown,5332,42 3,Paul,Redford,2345,36
我的脚本中有一个 Read-Host
语句要求提供 ID。一旦我有了这个 - 假设它是 2 - 我现在想导入这个 CSV 文件并读取 ID=2 的行并将姓名、姓氏、能量和糖保存在变量中。
我试过 ForEach-Object
等,但它打印了所有 ID 列并仅保存最后一行。
如何仅在 if
条件为真时获取行值?
只需使用 Where-Object
过滤器:
$id = Read-Host ...
$row = Import-Csv 'input.csv' | Where-Object { $_.Id -eq $id }
您可以将 CSV 的字段存储在单独的变量中:
$name = $row.Name
$surname = $row.Surname
$energy = $row.Energy
$sugar = $row.Sugar
但这通常既不需要也不推荐。只需使用对象变量的属性(本例中为 $row
)。