Я написал код powershell, чтобы прочитать очень большой файл .txt, выбрать определенные строки и поместить их в CSV. проблема заключается в том, что файл отформатирован так:преобразование текстового файла в CSV-файл
header1: Data1
header2: Data1
header3: Data1
header4: Data1
header1: Data2
header2: Data2
header3: Data2
header4: Data2
и мне нужно, чтобы преобразовать его в этом:
Header1,Header2,Header3,Header4
data1,data1,data1,data1
data2,data2,data2,data2
код это:
$path = get-location
$textfile = Get-FileName $env:USERPROFILE\Downloads\
$writefile = "$path\data2.csv"
$reader = [System.IO.File]::OpenText($textfile)
$writer = New-Object System.IO.StreamWriter $writefile
$writer.WriteLine('{0},{1},{2},{3}', "Policy","Schedule Type","Retention Level","Host")
for(;;) {
$line = $reader.ReadLine() #
if ($null -eq $line) {
break
}
$data = $line.Split(":")
if ($null -ne $data[0]) {
$newdata0 = $data[0].trimstart(" ")
}
if ($null -ne $data[1]) {
$newdata1 = $data[1].trimstart(" ")
}
if ($newdata0 -eq "Policy") {$writer.WriteLine('{0},{1},{2},{3}', $newdata1,$null,$null,$null)}
if ($newdata0 -eq "Schedule Type") {$writer.WriteLine('{0},{1},{2},{3}', $null,$newdata1,$null,$null)}
if ($newdata0 -eq "Retention Level") {$writer.WriteLine('{0},{1},{2},{3}', $null,$null,$newdata1,$null)}
if ($newdata0 -eq "Host") {$writer.WriteLine('{0},{1},{2},{3}', $null,$null,$null,$newdata1)}
}
$reader.Close()
$writer.Close()
, но я в конечном итоге с этим (фактические данные):
Policy,Schedule Type,Retention Level,Host
FS-Win-Servers-Tokyo-DACS_ONLY,,,
,FULL (0),,
,,infinity (9),
,,,opback03e.options-it.com
DB-Win-Exch2013-ADB11,,,
,INCR (1),,
,,6 months (6),
,,,opback03e.options-it.com
DB-Win-Exch2013-MDB11,,,
,INCR (1),,
,,6 months (6),
,,,opback03e.options-it.com
DB-Win-Exch2013-MDB10,,,
,INCR (1),,
,,6 months (6),
,,,opback03e.options-it.com
Я думаю, что я ошибаюсь в этом коде или, может быть, просто нужно найти способ переформатировать CSV?
Я думаю, что это поможет вам: http://stackoverflow.com/a/8970351/5341953 – notgiorgi
спасибо, но У меня есть файл CSV. проблема в моем коде, я не могу заставить данные писать на одной строке CSV. он записывает в правильный столбец, но я знаю, как получить данные в одной строке. – user2026188