socat возвращает данные с \r\n
окончаниями строк. + Изменить
s/$/)/
в
s/\r$/)/
Это может или не может работать с OSX Sed
У меня есть сервер, который отправляет данные в 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. Есть ли что-нибудь еще, что я могу попробовать?
socat возвращает данные с \r\n
окончаниями строк. + Изменить
s/$/)/
в
s/\r$/)/
Это может или не может работать с OSX Sed
Альтернативой явному удалению CR является сообщение о socat
том, что строки завершены CR NL:
socat -u udp-recv:10552,reuseaddr,crnl - | sed 's/[^,]*,//;s/,/, /g;s/^/(/;s/$/)/'