Помогите с кодом.. [Решено]

Изображение пользователя alex286.

Есть скрипт для формирования глав в видеофайлах формата "Матроска" . Взят текст
В файле есть ошибка. Вместо строки
00:05:00.000000000
формируется строка
00:05:00,000 С "эндами" то-же самое...
то, есть очевидная ошибка, вместо точки, запятая... Ну с нолями "не так" . Правда я думаю, что это ерунда..
Задача, поправить скрипт... Я к сожалению, не программист, да к тому-же еще и стар...суперстар... :)

0
trubadur4ik - 19 Январь, 2012 - 06:38
Изображение пользователя trubadur4ik.
Развернуть/свернуть скрытый текст.
да к тому-же еще и стар...суперстар... :)

Так это значит год рождения (286)... А я-то всё сомневался! :-)
А это до нашей эры или уже нашей всё-таки?

0
alex286 - 19 Январь, 2012 - 07:53
Изображение пользователя alex286.

Было дело "пописывал" на ассемблере различные драйвера для тогда еще только появившихся 8088/80286 процессоров...аккурат у "истоков" Windows 3.11,95 и первых загружаемых прямо из DOS (отдельным разделом-файлом) "линей"..типа вот этого "Оттуда" и ник...

0
Master_Yoda - 19 Январь, 2012 - 16:51

Сдаётся мне, дело не в скрипте. Вот краеугольная функция (можно в консоли испытать):
printf "%02d:%02d:%06.3f\n" 30 30 30

А как изменить разделитель разрядов хз. Т.е. формат f - это число с плавающей точкой, но сама оболочка делает разделитель разрядов запятой. Можно, кстати, вообще оставить только %f, без 06.3.

0
alex286 - 19 Январь, 2012 - 17:14
Изображение пользователя alex286.

Ну я тоже подумал, что дело в строке оператора "print". Но вот как и что...

0
caskad - 19 Январь, 2012 - 18:15

Можно например так...
printf "%02d:%02d:%06.9f\n" 30 30 30 | sed 's/\,/./g'

0
alex286 - 19 Январь, 2012 - 18:59
Изображение пользователя alex286.

Блин..SED ...читаешь мысли.. а как это в скрипт "вкрутить"? Ладно, пробую...

0
alex286 - 19 Январь, 2012 - 19:21
Изображение пользователя alex286.

Отлично, все работает... SED как всегда "на высоте".. Спасибо! :)

0
Master_Yoda - 19 Январь, 2012 - 22:23

Вот отличное решение:

$ LC_NUMERIC=C
$ printf "%02d:%02d:%06.3f\n" 30 30 300
$ 30:30:300.000

Решение было подсказано там, где обитают подлинные скриптовые гуру :) На forum.ru-board.com. Т.е. достаточно в начале скрипта вставить LC_NUMERIC=C и усё будэ в ёлочку.

Отправить комментарий

CAPTCHA на основе изображений
Введите цифры