powershell脚本:
$test = import-csv “C:\CSVFiles\test.csv”
ForEach ($item in $test)
{
$Name = $item.(“Name”)
$property = $item.("property")
$location = $item.(“location”)
Write-Output "$Name=$Name"
Write-Output "Property=$property"
Write-Output "Location=$location"
}
Run Code Online (Sandbox Code Playgroud)
此脚本显示每行的名称,属性和位置的所有数据.我希望结果只显示一行的数据;例如行:n1; 13;计算机
Cvs文件=
Name;property;location
n1;13;computer
n2;65;computer
n3;12;tablet
n4;234;phone
n5;123;phone
n6;125;phone
Run Code Online (Sandbox Code Playgroud)
当前脚本吐出的内容:
Name=n1
Property=13
Location=computer
Name=n2
Property=65
Location=computer
Name= n3
Property=12
Location=tablet
Name=n4
Property=234
Location=phone
Name=n5
Property=123
Location=phone
Name=n6
Property=125
Location=phone
Run Code Online (Sandbox Code Playgroud)
小智 6
有许多方法可以选择csv的行并显示数据
为了演示,我使用带有here字符串的内联csv.
$Test = @"
Name;property;location
n1;13;computer
n2;65;computer
n3;12;tablet
n4;234;phone
n5;123;phone
n6;125;phone
"@ | ConvertFrom-Csv -delimiter ';'
Run Code Online (Sandbox Code Playgroud)
> $test[0]
Name property location
---- -------- --------
n1 13 computer
Run Code Online (Sandbox Code Playgroud)
> $test | where-object Name -eq 'n1'
Name property location
---- -------- --------
n1 13 computer
Run Code Online (Sandbox Code Playgroud)
> $test | where-object Name -eq 'n1' | Select-Object Name,property
Name property
---- --------
n1 13
Run Code Online (Sandbox Code Playgroud)
> $test | where-object Name -eq 'n1' | ForEach-Object {"Name:{0} has property: {1}" -f $_.Name,$_.property}
Name:n1 has property: 13
Run Code Online (Sandbox Code Playgroud)
导入后,csv行内容将转换为对象
如果要获取匹配条件的csv的原始行,请不要导入,但是:
> Get-Content "C:\CSVFiles\test.csv" | Select-String '^n1'
n1;13;computer
Run Code Online (Sandbox Code Playgroud)
^n1 是一个正则表达式,用于将模式锚定在第一行.
Select-String -Path "C:\CSVFiles\test.csv" -Pattern '^n1'
Run Code Online (Sandbox Code Playgroud)
没有管道是一样的
所以你当前的输出有 3 个对象,它们主要有 3 个标头。一是姓名;第二个是Property,第三个是Location。
作为解决方案的一部分,您可以通过指定索引值来拉取记录,也可以使用 .Headername 来拉取同一对象的所有集合。喜欢:
避免 Foreach 并使用$test[0]或进行访问$test[1]
或者您可以直接使用 like:$test.Name来获取 csv 中的所有名称
| 归档时间: |
|
| 查看次数: |
4769 次 |
| 最近记录: |