пробую
gu@moshell:~$ file -i /mnt/hgfs/shara/file.csv
/mnt/hgfs/shara/file.csv: text/plain; charset=unknown-8bit
gu@moshell:~$
что это за такой charset=unknown-8bit
?
пробую
gu@moshell:~$ file -i /mnt/hgfs/shara/file.csv
/mnt/hgfs/shara/file.csv: text/plain; charset=unknown-8bit
gu@moshell:~$
что это за такой charset=unknown-8bit
?
Как-то так...
sed 's/\r//g' FILEtr -d '\r' < BAD_FILE > FILEнекоторые строки "разрываются" хорошо, линух их понимает, а некоторые "разрываются" как то по неведомому мне принципу
Покажите
cat -A /mnt/hgfs/shara/file.csv
по крайней мере ту часть, где видны эти «неправильные» и «правильные» разрывы строк.
ход мыслей понятен.
в общем пора начинать курить VBA
ибо файлы эти мост-дайные.
взяты из экселя, в котором в пределах одной (некоторых) ячейки (ячейках) могут быть несколько строк.
то есть половина данных теряется во время преобразования из экселя в csv.
спасибо, Альберто.
прибейте тему (можно даже удалить) иначе в меня скоро тапочки полетят за частые маздайные вопросы
в общем пора начинать курить VBA
За это можно не то что тапочком - валенком стоит огреть :)
то есть половина данных теряется во время преобразования из экселя в csv.
Попробуйте преобразовывать в LO или OO.
[quote="moshell"]в общем пора начинать курить VBA
За это можно не то что тапочком - валенком стоит огреть :)
[/quote]
предлагаете пересадить начальство на линухс?
[quote="moshell"]то есть половина данных теряется во время преобразования из экселя в csv.
Попробуйте преобразовывать в LO или OO.[/quote]
не совсем понимаю о чем речь?
Но если файл уже изначально из маздая приходит битым, как с ним в линуксе работать?
#####################################
#####################################
выход следующий:
1) макрос убивает невидимые символы в экселе
Workbooks(Workbooks.Count).Worksheets(2).Range("A1:J250") = Application.Clean(Workbooks(Workbooks.Count).Worksheets(2).Range("A1:J250"))
2) переносим в линукс через "общую папочку"
3) далее
gu@moshell:~$ enca file.csv
MS-Windows code page 1251
gu@moshell:~$ recode -l | grep 1251
CP1251/CR-LF 1251/CR-LF ms-cyrl windows-1251
gu@moshell:~$ recode windows-1251 file.csv
gu@moshell:~$ enca file.csv
Universal transformation format 8 bits; UTF-8
CRLF line terminators
перекодирует хорошо, но разрыв строк сами видите какие.
для этого
gu@moshell:~$ dos2unix -n file.csv newfile
dos2unix: converting file file.csv to file newfile in Unix format ...
gu@moshell:~$ enca newfile
Universal transformation format 8 bits; UTF-8
Все хорошо, все ОК, но куча манипуляций.
к сожалению не нашел в recode ключика для изменения разрыва строк (такого как в dos2unix)
можно было бы в одной команде dos2unix все делать, но
Convert from Windows CP1252 to Unix UTF-8 (Unicode)
iconv -f CP1252 -t UTF-8 in.txt | dos2unix > out.txt
перекодирует в крокозябры, не знаю, может потому что тут 1252 а не 1251, в кодировках не силен.
можно ли как то упростить сиё творение?
половина данных теряется во время преобразования из экселя в csv.
не совсем понимаю о чем речь?
Но если файл уже изначально из маздая приходит битым, как с ним в линуксе работать?
Так я и говорю, поставить в оффтопик OO или LO и попробовать конвертировать ими, возможно у них получится лучше, чем у MS Excel.
enca сама умеет переконвертировать в нужную кодировку.
enca сама умеет переконвертировать в нужную кодировку.
да,
enconv file
справляется с этой задачей, но не нашел как в ней же преобразовать разрывы строк