我有一个每天生成的CSV文件,并使用以下数据生成:
windows:NT:v:n:n:d:n:n:n:n:m:n:n
我还应该提到该示例是3,900多个行中的一个,并且并非每行数据都具有相同数量的“列”。我正在尝试做的只是将数据的前两个“列”导入到变量中。对于此示例,它将是“ Windows”和“ NT”,仅此而已。
我将如何去做?我尝试使用-delimiter':',但运气不高。
答案 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]