1

пробую

gu@moshell:~$ file -i /mnt/hgfs/shara/file.csv
/mnt/hgfs/shara/file.csv: text/plain; charset=unknown-8bit
gu@moshell:~$

что это за такой charset=unknown-8bit
?

"Фирма Майкрософт не собирается поддерживать протокол TCP/IP в своих OS" 1993 (c) Билл Гейтс
"Мы изобрели новый протокол передачи данных, мы назвали его TCP/IP" 1995 (c) Билл Гейтс

2

enca

Был, был и весь вышел...

3 (30.10.2013 09:05:15 отредактировано moshell)

Lupo Alberto пишет:

enca

спасибо.

gu@moshell:~$ enca -L ru /mnt/hgfs/shara/file.csv
MS-Windows code page 1251
  Mixed line terminators
gu@moshell:~$

как правильно побороть   Mixed line terminators?
некоторые строки "разрываются" хорошо, линух их понимает, а некоторые "разрываются" как то по неведомому мне принципу

"Фирма Майкрософт не собирается поддерживать протокол TCP/IP в своих OS" 1993 (c) Билл Гейтс
"Мы изобрели новый протокол передачи данных, мы назвали его TCP/IP" 1995 (c) Билл Гейтс

4

Как-то так...

sed 's/\r//g' FILE
tr -d '\r' < BAD_FILE > FILE
Был, был и весь вышел...

5

moshell пишет:

некоторые строки "разрываются" хорошо, линух их понимает, а некоторые "разрываются" как то по неведомому мне принципу

Покажите

cat -A /mnt/hgfs/shara/file.csv

по крайней мере ту часть, где видны эти «неправильные» и «правильные» разрывы строк.

Был, был и весь вышел...

6

ход мыслей понятен.
в общем пора начинать курить VBA
ибо файлы эти мост-дайные.
взяты из экселя, в котором в пределах одной (некоторых) ячейки (ячейках) могут быть несколько строк.
то есть половина данных теряется во время преобразования из экселя в csv.

спасибо, Альберто.

прибейте тему (можно даже удалить) иначе в меня скоро тапочки полетят за частые маздайные вопросы

"Фирма Майкрософт не собирается поддерживать протокол TCP/IP в своих OS" 1993 (c) Билл Гейтс
"Мы изобрели новый протокол передачи данных, мы назвали его TCP/IP" 1995 (c) Билл Гейтс

7

moshell пишет:

в общем пора начинать курить VBA

За это можно не то что тапочком - валенком стоит огреть ab

moshell пишет:

то есть половина данных теряется во время преобразования из экселя в csv.

Попробуйте преобразовывать в LO или OO.

Да, у меня Ubuntu.
Нет, не глючит.

8

-=Serj=- пишет:
moshell пишет:

в общем пора начинать курить VBA

За это можно не то что тапочком - валенком стоит огреть ab

предлагаете пересадить начальство на линухс?

-=Serj=- пишет:
moshell пишет:

то есть половина данных теряется во время преобразования из экселя в csv.

Попробуйте преобразовывать в LO или OO.

не совсем понимаю о чем речь?
Но если файл уже изначально из маздая приходит битым, как с ним в линуксе работать?

#####################################
#####################################

выход следующий:
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, в кодировках не силен.

можно ли как то упростить сиё творение?

"Фирма Майкрософт не собирается поддерживать протокол TCP/IP в своих OS" 1993 (c) Билл Гейтс
"Мы изобрели новый протокол передачи данных, мы назвали его TCP/IP" 1995 (c) Билл Гейтс

9 (30.10.2013 12:33:08 отредактировано -=Serj=-)

moshell пишет:

половина данных теряется во время преобразования из экселя в csv.

moshell пишет:

не совсем понимаю о чем речь?
Но если файл уже изначально из маздая приходит битым, как с ним в линуксе работать?

Так я и говорю, поставить в оффтопик OO или LO и попробовать конвертировать ими, возможно у них получится лучше, чем у MS Excel.

Да, у меня Ubuntu.
Нет, не глючит.

10

enca сама умеет переконвертировать в нужную кодировку.

Был, был и весь вышел...

11

Lupo Alberto пишет:

enca сама умеет переконвертировать в нужную кодировку.

да,
enconv file
справляется с этой задачей, но не нашел как в ней же преобразовать разрывы строк

"Фирма Майкрософт не собирается поддерживать протокол TCP/IP в своих OS" 1993 (c) Билл Гейтс
"Мы изобрели новый протокол передачи данных, мы назвали его TCP/IP" 1995 (c) Билл Гейтс