В демонстрационных целях следующий скрипт
- сначала создает файл
noHeader.csv
со случайным количеством столбцов (10..15), строк (5..10) и содержимого. - Вторая часть читает в первой строке, разделяет ее на запятую ',', чтобы получить количество столбцов, и создает псевдоголовку
H1,H2,...Hx
, где x - это число столбцов. - Это
import-csv
файл и умножает H10 на 5 (приведение к удвоению)
## Q:\Test\2018\05\29\SO_50581599.ps1
$CsvFile = '.\NoHeader.csv'
$NewFile = '.\WithHeader.csv'
## ======================================================================
## Generate Csv without Header with random no of cols,rows,content
$cols= get-random -min 10 -max 15
$rows= get-random -min 5 -max 10
$Data = ForEach ($Row in (1..$Rows)){
(1..$Cols | ForEach-Object{Get-Random -min 100 -max 1000} ) -join ','
}
$Data | Out-File $CsvFile
"Generated {0} with {1} columns and {2} rows" -f $CsvFile,$cols,$rows
GC $CsvFile
"=" * 70
## ======================================================================
## evaluate number of columns in file $CsvFile
$ColCnt = ((Get-Content $CsvFile | Select -First 1) -split ',').Count
"File {0} has {1} columns" -f $CsvFile,$ColCnt
## generate Header H1..Hx
$Header = (1..$ColCnt | ForEach-Object{"H{0}" -f $_})
$NewCsv = ForEach($row in (Import-Csv $CsvFile -Header $Header)){
[double]$row.H10 *= 5
$row
}
$NewCsv |ft * -auto
$NewCsv | Export-csv $NewFile -NoType
Generated .\NoHeader.csv with 11 columns and 8 rows
591,864,196,281,599,216,152,236,621,311,934
942,222,522,590,649,788,421,665,493,116,282
359,984,645,276,297,320,632,934,296,197,750
746,486,375,756,462,286,977,834,765,828,907
156,899,258,941,222,517,170,301,739,501,414
395,891,182,224,430,773,115,645,114,919,401
743,475,335,650,222,899,690,442,525,695,539
861,341,114,498,550,824,635,407,235,285,631
======================================================================
File .\NoHeader.csv has 11 columns
H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11
-- -- -- -- -- -- -- -- -- --- ---
591 864 196 281 599 216 152 236 621 1555 934
942 222 522 590 649 788 421 665 493 580 282
359 984 645 276 297 320 632 934 296 985 750
746 486 375 756 462 286 977 834 765 4140 907
156 899 258 941 222 517 170 301 739 2505 414
395 891 182 224 430 773 115 645 114 4595 401
743 475 335 650 222 899 690 442 525 3475 539
861 341 114 498 550 824 635 407 235 1425 631