UNIX-ы, плиз хелп.
Правила форума
Пожалуйста, ознакомьтесь с правилами данного форума
Пожалуйста, ознакомьтесь с правилами данного форума
- george
- Графоман
- Сообщения: 14127
- Зарегистрирован: 20 июл 2003, 12:48
- Откуда: M2R
UNIX-ы, плиз хелп.
Вываливаю data extract во flat file. Формирую данные, пишу в строку, потом перехожу к следующей, опять пишу в строку. Строка переменной длины, в зависимости от длины полей, которые в нее пишутся. Все хорошо, но есть одна загвоздка. "Длинные" строки (пока что не могу понять какой длины) разбиваются на две или больше. Думал - просто редактор так отображает файл. Проверил HEX представление - стоит там в-явную возврат каретки/перевод строки. Трижды проверил код, никаких ВК/ПС там нету. Т.е такое чувство, что ЮНИХ самостоятельно строки разбивает как ему нравится.
Это так или нет? Если да, то какая длина максимальная? Есть ли способ ее увеличить?
Спасибо заранее.
Это так или нет? Если да, то какая длина максимальная? Есть ли способ ее увеличить?
Спасибо заранее.
- sobomax
- Маньяк
- Сообщения: 3699
- Зарегистрирован: 29 июн 2006, 22:53
- Откуда: Vancouver
Re: UNIX-ы, плиз хелп.
Ничего не понятно. Как говорил классик "потрудитесь объяснить кто на ком стоял".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
- george
- Графоман
- Сообщения: 14127
- Зарегистрирован: 20 июл 2003, 12:48
- Откуда: M2R
Фух, попытаюсь детализировать, если получитца. Юних из меня никакой
Просто база под ним крутится.
Есть база. Мне из нее надо выгрузить данные, в простой текстовой файл. Данные одной и той же структуры в каждой строке. Каждая строка может несмотря на это иметь данные разной длины. Например, в случае с Имя Фамилия:
папа^Карло
Универсал^Универсалыч
вторая строка явно длиннее, хотя структура одна и та же. Разделитель между полями ап-эрров, ака ^.
Вот. Так когда строка превышает определенную длину - мне кажется, она автоматически разбивается на две или сколько надо, чтобы каждая из подстрок не превышала эту длину.
Хотя я до сих пор не уверен, или это не вьювер (пардон, не редактор!) так делает, зараза. Может, он так просто данные показывает.
Вьювер кстати - встроенный в фтп Смарттерма, когда в фтп моду заходишь, даже не знаю как он называется. Именно там если HEX (а не текст) просмотр включить - показывает 0d 0a в конце строки, т.е. ВК/ПС.
Ну что, я смог?

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

- папа Карло
- Шарманщик
- Сообщения: 8565
- Зарегистрирован: 17 фев 2003, 15:04
- Откуда: НН -> BC -> WA -> UT -> CA
чтоб отмести проблему юниха.... посчитай длинну строк перлом .... сразу все на свои места встанет. может и проблемыт о нет, а ты нагнетаешьgeorge писал(а):Фух, попытаюсь детализировать, если получитца. Юних из меня никакойПросто база под ним крутится.
Есть база. Мне из нее надо выгрузить данные, в простой текстовой файл. Данные одной и той же структуры в каждой строке. Каждая строка может несмотря на это иметь данные разной длины. Например, в случае с Имя Фамилия:
папа^Карло
Универсал^Универсалыч
вторая строка явно длиннее, хотя структура одна и та же. Разделитель между полями ап-эрров, ака ^.
Вот. Так когда строка превышает определенную длину - мне кажется, она автоматически разбивается на две или сколько надо, чтобы каждая из подстрок не превышала эту длину.
Хотя я до сих пор не уверен, или это не вьювер (пардон, не редактор!) так делает, зараза. Может, он так просто данные показывает.
Вьювер кстати - встроенный в фтп Смарттерма, когда в фтп моду заходишь, даже не знаю как он называется. Именно там если HEX (а не текст) просмотр включить - показывает 0d 0a в конце строки, т.е. ВК/ПС.
Ну что, я смог?

- aissp
- Маньяк
- Сообщения: 2710
- Зарегистрирован: 07 ноя 2005, 09:51
- george
- Графоман
- Сообщения: 14127
- Зарегистрирован: 20 июл 2003, 12:48
- Откуда: M2R
- папа Карло
- Шарманщик
- Сообщения: 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
- dima
- Житель
- Сообщения: 690
- Зарегистрирован: 19 фев 2003, 19:26
- Откуда: Хабаровск->Toronto
если источник данных база данных, то "ищи на третьей планете". Идет в порядке важности (imho)george писал(а):Каки перлом, какую строку?Ничо не понимаю...
А, я кажется понимаю, что ты имеешь в виду. Это мне китаец один (китайка точнее) мозги совсем задурила... Я тут прочитал, что их слушатца надоЗавтра проверю-доложу
Спасибо мужики!
1. проверь, что данные в таблицая не имеют перевода строки (\r и-или \n)
2. читаешь через ODBC или native ? смотри если стоят опции трансляции данных и даннае записаны в Unicod-е или code-page (например koi-8 )
3. смотри исходники, которые читают-пишут.
Unix не имеет проблемы с длинной строки (на сколько я знаю), открывай файл и пиши туда по одной букве долго, все запишется без проблем, даже если длинна файла привысит unsigned long.
- Nick
- Завсегдатай
- Сообщения: 407
- Зарегистрирован: 24 фев 2003, 22:20
- Откуда: Nsk-Vancouver
Т.е. ты файл сперва на писюк тащишь? Да еще в text mode, небось? В Unix 0D0A быть точно не может, ибо там признак новой строки тока 0A.george писал(а):Вьювер кстати - встроенный в фтп Смарттерма, когда в фтп моду заходишь, даже не знаю как он называется. Именно там если HEX (а не текст) просмотр включить - показывает 0d 0a в конце строки, т.е. ВК/ПС.
- george
- Графоман
- Сообщения: 14127
- Зарегистрирован: 20 июл 2003, 12:48
- Откуда: M2R
Короче, дело очень простое оказалось. Файла была открыта с параметром recsize=512 (по умолчанию). Поставил параметр 1024, и все пошло.
Просто открытие файла без параметра предполагает по умолчанию 512. А доков никаких нету, кгбычно. Пока в исходники системной утилиты не залез и не разобрался.
Всем спасибо за участие!
Просто открытие файла без параметра предполагает по умолчанию 512. А доков никаких нету, кгбычно. Пока в исходники системной утилиты не залез и не разобрался.
Всем спасибо за участие!
- Garik
- Завсегдатай
- Сообщения: 480
- Зарегистрирован: 02 ноя 2006, 21:03
- Откуда: Киев->Торонто->куда глаза глядят