![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| vitR |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 12.6.2006 Репутация: нет Всего: нет |
Приветствую всех.
Возникла необходимо отсортировать строки заключенные между ограничителями (Т[1-8]). Вот пример файла: M48 METRIC,0000.00 T01C0.80 T02C0.90 T03C1.00 % T02 X+010670Y-002440 X+010670Y-002930 T03 X+010537Y+002930 X+002660Y-003172 T04 X+011020Y-003550 X+010520Y-003550 T05 X+011310Y+003070 X+012990Y+003070 T08 X+006480Y+000230 X+009620Y+004110 T00 M30 Сама сортирвка реализована так:
Пример честно содран из Perl Cookbook Как выделить строки заключенные между ограничителями? Хочется примерно такого: Пока не найден первый ограничитель - выводим на STDIN. Нашли первый ограничитель - читаем строки до тех пор пока не будет найден следующий(его не включаем). Сортируем. Выводим в STDIN. И т.д. Когда нашли Т0, то его и всё что после, выводим в STDIN. Для меня явилось проблемой передать положение файлового указателя. Пните в нужную сторону. |
|||
|
||||
| Ivan Kolesnikov |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 113 Регистрация: 9.3.2005 Где: г. Новокузнецк Репутация: 3 Всего: 6 |
Привет, что-то я не понял зачем ты привел этот пример, тебе ведь надо просто отсортировать, зачем использовать хеш?
Как бы делал я: ввел бы переменную, которая определяла что мне нужно сделать с новой прочитанной строкой: если она ИСТИНА, то значит необходимо добавить строку в буфер (массив), если же она ЛОЖ, то напрямую выводим ее в результирующий файл. Теперь сам алгоритм: сначала эта переменная лож, и мы все выводим в файл, при этом смотрим если прочитанная строка имеет шабло: /T\d{2}/, то значит нужно вывести в файл содержимое буфера в отсортированном порядке, а затем и ее. Если же прочитанная строка T00, то и изменить значение описанной выше переменой и снова выводить все подряд в ответ. Вот примерная реализация:
--------------------
|
|||
|
||||
| vitR |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 12.6.2006 Репутация: нет Всего: нет |
Спасибо, Иван, за ответ. То, что нужно!
А такая сортировка была необходима для того, чтобы не терять пары значений.____ Но алгоритм был немного другой. Вот и взял не раздумывая... |
|||
|
||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |