如何在powershell中过滤单行CSV的内容

时间:2015-03-10 16:42:08

标签: powershell powershell-v2.0 powershell-v3.0

我有一个相当愚蠢的问题:)

我有一个CSV,例如:

"test","bla","monkey","test3"
1,2,3,4
4,3,2,1

我正在导入变量,例如$ data 我怎样才能过滤第一行 - 例如,我只想用名称中的" test *拉回行条目?

谢谢!

3 个答案:

答案 0 :(得分:2)

即使您没有需要按摩的现有代码,也会根据某些假设发布答案。

假设您没有听到行,为列数指定任意数字并加载到名为$csv

的变量中
$csv = Import-Csv C:\Temp\test.csv -Header @(1..4)

现在使用$csv变量并进行查询以将结果返回到$ data变量中,您可以说出它们匹配的位置“第一列中的测试”

$data = $csv | ? { $_.1 -match "test"}

$data中存储的结果现在应如下所示。

1    2   3      4
-    -   -      -
test bla monkey test3

答案 1 :(得分:0)

我使用的是PowerShell v3,没有任何内容可循,所以我只列出抓住第一行的最简单方法。

$csv = Import-Csv c:\test\test.csv
$csv[0]

这将返回$ csv对象中的第一项,Import-Csv默认将第1行识别为标题,如果标题行不存在则需要使用-Header标志。

答案 2 :(得分:0)

感谢大家的投入。我意识到我对所需内容的解释过于简化和过于模糊。我实际上想要获取标题行的名称,以便我可以按包含特定单词的标题进行过滤。所以这是有效的:

$csv = Import-Csv c:\temp\test.csv
$filteredResults = ($csv | get-member | ?{$_.Name -like "*test*"}).Name

返回变量:

test
test3