如何导入CSV文件中每行的前两个值电源外壳

时间:2018-08-06 18:52:17

标签: powershell csv search powershell-ise

我有一个每天生成的CSV文件,并使用以下数据生成:

windows:NT:v:n:n:d:n:n:n:n:m:n:n

我还应该提到该示例是3,900多个行中的一个,并且并非每行数据都具有相同数量的“列”。我正在尝试做的只是将数据的前两个“列”导入到变量中。对于此示例,它将是“ Windows”和“ NT”,仅此而已。

我将如何去做?我尝试使用-delimiter':',但运气不高。

3 个答案:

答案 0 :(得分:2)

行数无关紧要。

我的评论(对您先前的问题)的方法应该有效,
如果没有标题,而您只想要前两列,
只需指定标题1,2

> import-csv .\strange.csv -delim ':' -Header (1..2) |Where 2 -eq 'NT'

1       2
-       -
windows NT

答案 1 :(得分:1)

构建整个数组的示例

$Splitted_List = @()

foreach($Line in Get-Content '.\myfilewithuseragents.txt'){           
    $Splitted = $Line -split ":"
    $Splitted_Object = [PSCustomObject]@{
        $part1 = $splitted[0]
        $part2 = $Splitted[1]        
    }
    $Splitted_List.Add($Splitted_Object) | Out-Null    
}

答案 2 :(得分:0)

对于每一行,您只需阅读该行,并使用该行中的字符串,就可以轻松地对其进行拆分

{
  "add-field-type" : {
     "name":"removeDoubleLettersField",
     "class":"solr.TextField",
     "positionIncrementGap":"100",
     "analyzer" : {
        "charFilters":[{
           "class":"solr.PatternReplaceCharFilterFactory",
           "replacement":"$1",
           "pattern":"([a-zA-Z0-9])\\1{1,}" }],
        "tokenizer":{
           "class":"solr.WhitespaceTokenizerFactory" },
        "filters":[{
           "class":"solr.WordDelimiterFilterFactory",
           "preserveOriginal":"0" }]}}
}

然后,第一部分将被称为$useragent = "windows:NT:v:n:n:d:n:n:n:n:m:n:n" ,第二部分将被称为$useragent.Split(":")[0],等等。


包括for循环

$useragent.Split(":")[1]