У меня есть сервер, который отправляет данные в UDP Broadcast на порт 10552. Данные состоят из 7 цифр, разделенных запятыми.
5.351204,0.001968,-0.000473,-0.999222,0.000451,0.001455,1.084310
Я получаю эти данные с
socat -u udp-recv:10552,reuseaddr -
Я хочу изменить формат этих данных, поэтому я передаю их в sed. Мне плевать на первый номер, поэтому я удаляю его
s/[^,]*,//;
Я добавляю пробелы после запятых
s/,/, /g
Затем я добавляю открытую скобку в начало каждой строки
s/^/(/
Наконец, я пытаюсь добавить закрывающую скобку в конец каждой строки
s/$/)/
Последняя команда заканчивается
socat -u udp-recv:10552,reuseaddr - | sed 's/[^,]*,//;s/,/, /g;s/^/(/;s/$/)/'
Все работает, как и ожидалось, за исключением заключительной закрывающей скобки в конце каждой строки, поэтому выглядит
)0.051727, -0.595779, -0.794678, 0.082047, 0.644327, -0.027242
Удаление последнего бита команды для
socat -u udp-recv:10552,reuseaddr - | sed 's/[^,]*,//;s/,/, /g;s/^/(/;'
результаты в
(0.079330, -0.608597, -0.786194, 0.092438, 0.657444, -0.031528
Я попытался заменить добавление конца строки на awk, tr, а также GNU sed, но кажется, что все переполняет строку или что-то в этом роде.
Я на OS X 10.10.3 со встроенным Bash 3.2. Есть ли что-нибудь еще, что я могу попробовать?