Slovenski jezik bo verjetno vedno povtročal težave (in vir zaslužka) računalničarjem. Obdelava Excela v Powershellu, ki je je očitno razvit predvsem za anglosaksonski svet, tako prinaša tradicionalne težave z šumniki,
decimalno vejico in podpičji. Pred uvažanjem se
prepričamo, da imamo res SLO nastavitev:
(Get-Culture).TextInfo.ListSeparator
;
Začetna CSV datoteka
ima vsebino:
cat num.csv
Dat;st;ime
11.3.1963;10,1;Šime
1.2.1930;2,222;Jurček
6.12.1999;3,345;Žan
13.2.2012;122;Jaka
Get-item predpostavlja UTF-8 kodiranje znakov, zato ni videti težav. Import-CSV pa predpostvlja ASCI znake, zato pride do čudnih
znakov in nenavadnega uvoza. Pretvorbo izvedemo zelo enostavno:
cat num.csv > asci.csv
V prvem koraku smo torej rešili problem šumnikov:
import-csv
asci.csv -delimiter ';'|sort ime
Dat st ime
--- -- ---
13.2.2012 122 Jaka
1.2.1930 2,222 Jurček
11.3.1963 10,1 Šime
6.12.1999 3,345 Žan
Enako v PS3, ki pa
lahko poskrbi za kodiranje in prepoznavanje jezika
Import-CSV asci.csv -useculture -encoding
utf8|sort ime
Razvrščanje po
datumu in številih pa še vedno ne deluje, zato preoblikujemo podatke:
$OblikaCSV = Import-Csv
asci.csv -useculture
-encoding utf8
| foreach {
New-Object PSObject
-prop @{
Dat = [DateTime]::Parse($_.Dat);
st = [Double]::Parse($_.st);
ime = $_.ime
}
}
Zdaj končno
lahko izvajamo operacije na vseh stolpcih:
$oblikacsv|sort st -desc|ft * -auto
Dat ime st
--- --- --
13.2.2012 0:00:00 Jaka 122
11.3.1963 0:00:00 Šime 10,1
6.12.1999 0:00:00 Žan 3,345
1.2.1930 0:00:00 Jurček 2,222
$oblikacsv| where { $_.Dat -gt (get-date).AddYears(-2) }
Dat ime
--- ---
13.2.2012 0:00:00 Jaka
$oblikacsv| where { $_.Dat -gt (get-date).AddYears(-2) }
Dat ime
--- ---
13.2.2012 0:00:00 Jaka
Podatke lahko obdelujemo, shranjujemo in prikazujemo:
$oblikacsv| where { $_.Dat -lt
(get-date).AddYears(-2) }|export-csv -delimiter ';' -encoding utf8 -notype
rezultat.csv
type rezultat.csv
"Dat";"ime";"st"
"11.3.1963 0:00:00";"Šime";"10,1"
"1.2.1930
0:00:00";"Jurček";"2,222"
"6.12.1999 0:00:00";"Žan";"3,345"
$oblikacsv| where { $_.Dat -lt
(get-date).AddYears(-2) }|out-gridview
Ni komentarjev:
Objavite komentar