Страница 1 из 1

Структурированный табличный вывод

Добавлено: 05 июн 2020, 21:13
Sertik
Никак не пойму как это работает:

(взято у автора скрипта из viewtopic.php?f=14&t=11609:)

if (($interfaceName = $hostInterface) && ($interfaceName != $bridgeName)) do={
:local printInterface ([ :pick [( $hostInterface." " )] 0 16 ]);
:local printNameMAC ([ :pick [( $hostName." (".$hostMAC.") " )] 0 44 ]);
:local printComment ([ :pick [( $hostComment." " )] 0 30 ]);
:local printIP ([ :pick [( $hostIP." " )] 0 20 ]);
:put ($printInterface." ".$printNameMAC." remark: ".$printComment." ".$printIP." ".$bridgeName);
}

Как автор расчитал количество пробелов между словами в строках в каждом столбце ?

Нет, то есть как работает я понимаю, всё просто. Формируется итоговое слово нужной длины, пиком отсекаются лишние пробелы.

Но ! почему с :put - выводом в термиал это работает, а с :log info нет ?

:log info ($printInterface." ".$printNameMAC." remark: ".$printComment." ".$printIP." ".$bridgeName);

Re: Структурированный табличный вывод

Добавлено: 05 июн 2020, 22:28
Sertik
Вроде разобрался в чем дело. Несмотря на четкое "обрезание" по количеству символов длина формируемых слов в табличных строках выводом :log получается разная. Это связано с тем, что знакоместо символа имеет различную величину и это приводит к смещению столбцов несмотря на одинаковое число символов в каждом. В терминале такого нет там все четко - все символы (любые) имеют равные знакоместа. Это плохо. Получается никак нельзя в логе роутерОС вывести данные в ровные столбцы (скажем выравненные все по левому краю), а в терминале можно - там знакоместо одинаковое для каждого символа.

Или не прав ?

Да... Строки определенной длины в пикселях роутерОС формировать не умеет ...

Re: Структурированный табличный вывод

Добавлено: 06 июн 2020, 12:52
podarok66
А я давно говорил, что в RouterOs не хватает bash со всякими sed, awk и тому подобным ;;-))) Я бы, наверное, за вариант лицензии с полноценным bash доплатил бы даже.