Tema: Re: Q: [f|s]printf problemos
Autorius: Laimis
Data: 2011-01-16 00:37:35
ejs rašė:

>> 1) matlab'e:
>> str = sprintf('%f', x)
>> str = strrep(str, '.', ',');
>> fprintf(fout, '%s...', str, ...);
>
> vėl hardcod'inimas, tik į kitą pusę. Ir nematau MatLAB'e galimybės gauti
> lokalės nustatymus perdaug neprogramuojant.

Taip, bet ir pats taškas ar kablelis yra hardcodintas csv (tam, kuris 
turi virškinti csv, nors tam tikru formatu, priklausančiu nuo lokalės, 
nemoka). Tai nematau nieko blogo, jei duomenų šaltinis (Matlab'as) 
eksportuotų į vieną iš pasirinktų/pageidaujamų formatų.

http://www.mathworks.com/matlabcentral/fileexchange/26646-readfloat-m
(kaip gauti lokalės nustatymus)

>> 2) sed, awk (priklausomai nuo to ar galima tiesmukiškai keisti visus
>> stulpelius, t.y. ar nėra tekstinių/datos stulpelių, kuriuose galėtų būti
>> taškai/kableliai):
>> sed -i.orig -e 's/\./\,/g' file.csv
>
> taškų yra. Ten pat keliauja ir failo pavadinimas. Duomenų bloko pvz:

Jei failo formatas (ir antraštė -- header'is) apibrėžtas, tai galima 
sed'inti nuo tolimesnių eilučių.

> tas kažkiek veikia (bent jau RC7), bet bevelyčiau atspausti duomenis
> taip, kad nereiktų jokių šamanizmų juos toliau naudojant.

Tai šamanizmų iš esmės reikia skaitytojui, o ne rašytojui.