UNIX-ы, плиз хелп.

Все, что вы хотели знать о программизме, но боялись спросить.
Ответить
Аватара пользователя
george
Графоман
Сообщения: 14127
Зарегистрирован: 20 июл 2003, 12:48
Откуда: M2R

UNIX-ы, плиз хелп.

Сообщение george »

Вываливаю data extract во flat file. Формирую данные, пишу в строку, потом перехожу к следующей, опять пишу в строку. Строка переменной длины, в зависимости от длины полей, которые в нее пишутся. Все хорошо, но есть одна загвоздка. "Длинные" строки (пока что не могу понять какой длины) разбиваются на две или больше. Думал - просто редактор так отображает файл. Проверил HEX представление - стоит там в-явную возврат каретки/перевод строки. Трижды проверил код, никаких ВК/ПС там нету. Т.е такое чувство, что ЮНИХ самостоятельно строки разбивает как ему нравится.

Это так или нет? Если да, то какая длина максимальная? Есть ли способ ее увеличить?

Спасибо заранее.
Аватара пользователя
sobomax
Маньяк
Сообщения: 3699
Зарегистрирован: 29 июн 2006, 22:53
Откуда: Vancouver

Re: UNIX-ы, плиз хелп.

Сообщение sobomax »

george писал(а):Вываливаю data extract во flat file. Формирую данные, пишу в строку, потом перехожу к следующей, опять пишу в строку. Строка переменной длины, в зависимости от длины полей, которые в нее пишутся. Все хорошо, но есть одна загвоздка. "Длинные" строки (пока что не могу понять какой длины) разбиваются на две или больше. Думал - просто редактор так отображает файл. Проверил HEX представление - стоит там в-явную возврат каретки/перевод строки. Трижды проверил код, никаких ВК/ПС там нету. Т.е такое чувство, что ЮНИХ самостоятельно строки разбивает как ему нравится.

Это так или нет? Если да, то какая длина максимальная? Есть ли способ ее увеличить?

Спасибо заранее.
Ничего не понятно. Как говорил классик "потрудитесь объяснить кто на ком стоял". :)

Чем пишете, откуда? На чем код? Какие функции используете?

-Maxim
Аватара пользователя
папа Карло
Шарманщик
Сообщения: 8565
Зарегистрирован: 17 фев 2003, 15:04
Откуда: НН -> BC -> WA -> UT -> CA

Re: UNIX-ы, плиз хелп.

Сообщение папа Карло »

george писал(а):Вываливаю data extract во flat file. Формирую данные, пишу в строку, потом перехожу к следующей, опять пишу в строку. Строка переменной длины, в зависимости от длины полей, которые в нее пишутся. Все хорошо, но есть одна загвоздка. "Длинные" строки (пока что не могу понять какой длины) разбиваются на две или больше. Думал - просто редактор так отображает файл. Проверил HEX представление - стоит там в-явную возврат каретки/перевод строки. Трижды проверил код, никаких ВК/ПС там нету. Т.е такое чувство, что ЮНИХ самостоятельно строки разбивает как ему нравится.

Это так или нет? Если да, то какая длина максимальная? Есть ли способ ее увеличить?

Спасибо заранее.
странное говоришь.... не знаю каким хексом смотрел... на перле сбацай скриптик и напечатай длины каждой строки с ее номером... потом посмотришь.... такого я еще не видел....
Аватара пользователя
aissp
Маньяк
Сообщения: 2710
Зарегистрирован: 07 ноя 2005, 09:51

Сообщение aissp »

Вообще то поддерживает, такое чувство что вы пользуетесь vi, тогда да у вас проблемы, автоматический враппинг срабатавыает на пробельные символы
Аватара пользователя
george
Графоман
Сообщения: 14127
Зарегистрирован: 20 июл 2003, 12:48
Откуда: M2R

Сообщение george »

Фух, попытаюсь детализировать, если получитца. Юних из меня никакой ;) Просто база под ним крутится.

Есть база. Мне из нее надо выгрузить данные, в простой текстовой файл. Данные одной и той же структуры в каждой строке. Каждая строка может несмотря на это иметь данные разной длины. Например, в случае с Имя Фамилия:
папа^Карло
Универсал^Универсалыч
вторая строка явно длиннее, хотя структура одна и та же. Разделитель между полями ап-эрров, ака ^.

Вот. Так когда строка превышает определенную длину - мне кажется, она автоматически разбивается на две или сколько надо, чтобы каждая из подстрок не превышала эту длину.

Хотя я до сих пор не уверен, или это не вьювер (пардон, не редактор!) так делает, зараза. Может, он так просто данные показывает.
Вьювер кстати - встроенный в фтп Смарттерма, когда в фтп моду заходишь, даже не знаю как он называется. Именно там если HEX (а не текст) просмотр включить - показывает 0d 0a в конце строки, т.е. ВК/ПС.

Ну что, я смог? ;)
Аватара пользователя
папа Карло
Шарманщик
Сообщения: 8565
Зарегистрирован: 17 фев 2003, 15:04
Откуда: НН -> BC -> WA -> UT -> CA

Сообщение папа Карло »

george писал(а):Фух, попытаюсь детализировать, если получитца. Юних из меня никакой ;) Просто база под ним крутится.

Есть база. Мне из нее надо выгрузить данные, в простой текстовой файл. Данные одной и той же структуры в каждой строке. Каждая строка может несмотря на это иметь данные разной длины. Например, в случае с Имя Фамилия:
папа^Карло
Универсал^Универсалыч
вторая строка явно длиннее, хотя структура одна и та же. Разделитель между полями ап-эрров, ака ^.

Вот. Так когда строка превышает определенную длину - мне кажется, она автоматически разбивается на две или сколько надо, чтобы каждая из подстрок не превышала эту длину.

Хотя я до сих пор не уверен, или это не вьювер (пардон, не редактор!) так делает, зараза. Может, он так просто данные показывает.
Вьювер кстати - встроенный в фтп Смарттерма, когда в фтп моду заходишь, даже не знаю как он называется. Именно там если HEX (а не текст) просмотр включить - показывает 0d 0a в конце строки, т.е. ВК/ПС.

Ну что, я смог? ;)
чтоб отмести проблему юниха.... посчитай длинну строк перлом .... сразу все на свои места встанет. может и проблемыт о нет, а ты нагнетаешь :)
Аватара пользователя
aissp
Маньяк
Сообщения: 2710
Зарегистрирован: 07 ноя 2005, 09:51

Сообщение aissp »

Не-а :)

Имя сестра имя (с) три мушкетера

Чем ты делаешь всю ету работу? скриптами на шелле? Елси да то формируешь файл cat? или ето прямо из базы с помощь. какой то утилиты? Что за база что за утилита? Верняк ворд враппер гдей то включенным имеет место быть
Аватара пользователя
george
Графоман
Сообщения: 14127
Зарегистрирован: 20 июл 2003, 12:48
Откуда: M2R

Сообщение george »

Каки перлом, какую строку? ;) Ничо не понимаю...

А, я кажется понимаю, что ты имеешь в виду. Это мне китаец один (китайка точнее) мозги совсем задурила... Я тут прочитал, что их слушатца надо ;) Завтра проверю-доложу ;)

Спасибо мужики!
Аватара пользователя
папа Карло
Шарманщик
Сообщения: 8565
Зарегистрирован: 17 фев 2003, 15:04
Откуда: НН -> BC -> WA -> UT -> CA

Сообщение папа Карло »

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

Код: Выделить всё

use strict;

my $file = 'myfile.txt';
my $i = 1;

open(IN,"<$file") || die "$file: $!\n";

while(<IN>)
{
  chomp;
  my $l = length();

  print "$i\t$l\n";
  $i++;
}

close(IN);
Аватара пользователя
george
Графоман
Сообщения: 14127
Зарегистрирован: 20 июл 2003, 12:48
Откуда: M2R

Сообщение george »

Спасибо папа, посмотрю и это. Хотя я уже придумал как и что ;)
Аватара пользователя
dima
Житель
Сообщения: 690
Зарегистрирован: 19 фев 2003, 19:26
Откуда: Хабаровск->Toronto

Сообщение dima »

george писал(а):Каки перлом, какую строку? ;) Ничо не понимаю...

А, я кажется понимаю, что ты имеешь в виду. Это мне китаец один (китайка точнее) мозги совсем задурила... Я тут прочитал, что их слушатца надо ;) Завтра проверю-доложу ;)

Спасибо мужики!
если источник данных база данных, то "ищи на третьей планете". Идет в порядке важности (imho)
1. проверь, что данные в таблицая не имеют перевода строки (\r и-или \n)
2. читаешь через ODBC или native ? смотри если стоят опции трансляции данных и даннае записаны в Unicod-е или code-page (например koi-8 )
3. смотри исходники, которые читают-пишут.

Unix не имеет проблемы с длинной строки (на сколько я знаю), открывай файл и пиши туда по одной букве долго, все запишется без проблем, даже если длинна файла привысит unsigned long.
Аватара пользователя
Nick
Завсегдатай
Сообщения: 407
Зарегистрирован: 24 фев 2003, 22:20
Откуда: Nsk-Vancouver

Сообщение Nick »

george писал(а):Вьювер кстати - встроенный в фтп Смарттерма, когда в фтп моду заходишь, даже не знаю как он называется. Именно там если HEX (а не текст) просмотр включить - показывает 0d 0a в конце строки, т.е. ВК/ПС.
Т.е. ты файл сперва на писюк тащишь? Да еще в text mode, небось? В Unix 0D0A быть точно не может, ибо там признак новой строки тока 0A.
Аватара пользователя
george
Графоман
Сообщения: 14127
Зарегистрирован: 20 июл 2003, 12:48
Откуда: M2R

Сообщение george »

Короче, дело очень простое оказалось. Файла была открыта с параметром recsize=512 (по умолчанию). Поставил параметр 1024, и все пошло.

Просто открытие файла без параметра предполагает по умолчанию 512. А доков никаких нету, кгбычно. Пока в исходники системной утилиты не залез и не разобрался.

Всем спасибо за участие!
Аватара пользователя
Garik
Завсегдатай
Сообщения: 480
Зарегистрирован: 02 ноя 2006, 21:03
Откуда: Киев->Торонто->куда глаза глядят

Сообщение Garik »

я бы db-шную команду export с указанным выше разделителем использовал ,она тогда все эти переводы сама бы вставляла. Может я в воду .. того, но такое вроде как на всех бд работает.
Ответить