我是powershell的新手,但这看起来是执行此任务的最佳工具。 有一个看起来像这样的csv文件:
Date,mary1,mary2,maryr3,mary4
9/01/2011 1:00,1.39,3.43,3.29,1.83
9/01/2011 3:00,0,0,0,0
9/01/2011 4:00,0,0,0,0
9/01/2011 5:00,0,0,0,0
9/01/2011 6:00,1.91,0.07,0.09,0.09
9/01/2011 7:00,5.57,2.01,2.11,3.4
9/01/2011 8:00,0.53,0.41,0.35,2.01
9/01/2011 9:00,4.72,0.15,0.21,3.15
9/01/2011 10:00,0.21,0,0.49,0.72
9/01/2011 11:00,2.44,0.77,2.06,1.7
9/01/2011 12:00,0,4.91,5.21,1.98
这是逗号分隔的。 我试图将其拆分为多个包含一列的文本文件,基于标题列。
实际上我会有多个列,所以我希望有一个更通用的代码来处理更多的行和列。
有什么想法吗?我能够使用split函数并获取单个列,但是我对powershell的了解还不允许我进行多次提取。
非常感谢任何帮助。
答案 0 :(得分:3)
尝试:
$a = Import-Csv .\myfile.csv
$b = $a[0] | Get-Member | ? { $_.membertype -eq 'noteproperty'} | select name
$b | % { $a | ft -Property $_.name | out-file "$($_.name).txt" }
答案 1 :(得分:1)
###import csv file with value
$ps1 = Import-Csv .\testps.csv
foreach($p in $ps1){
## value which will be seprated
$t = $p.test
#####split delimiter is space you can select your own like , / etc.
$t1 = $t.Split(" ")
##########first value
$test1 = $t1[0]
######second value
$test2 = $t1[1]
#####Adding value in csv file test1 and test2
echo $p | Select-Object *,@{n='test1';e={"$test1"}},@{n='test2';e= {"$test2"}}|Export-Csv -Append testdone.csv
}
答案 2 :(得分:0)
查找Import-CSV
或逐行处理文件。要逐行读取文件,请使用.Net Framework。在逗号上拆分每一行,并根据数组索引将所需列添加到输出文件。对行进行处理的警告:如果源数据中有逗号,则会出现可怕的破坏。像这样,
# Open the source file
$file = [IO.File]::OpenText("somefile.csv")
# Read each line
while($line = $file.ReadLine()) {
# Split line data on comma
$l= $line.Split(',')
# Add columns 0 and 2 other file 1
add-content "otherfile1.csv" $("{0},{1}" -f $l[0], $l[2])
# Add columns 1, 3 and 5 other file 2
add-content "otherfile2.csv" $("{0},{1},{2}" -f $l[1], $l[3], $l[5])
}