Как я могу удалить возврат каретки, добавьте метку времени и проигнорируйте некоторые данные из живого канала MQTT

[

] У меня была похожая проблема. Проверьте, правильно ли имя хоста разрешено по IP-адресу. Если нет, попробуйте добавить ваше имя хоста в /etc/hosts, например:[

] [
] [

]127.0.0.2 myhostname.mydomain[

] [
]
1
02.03.2015, 23:23
2 ответа

Ну, скорее с толку, но в любом случае ... Судя по выходу
COSITOO_SUB -D -T + / # 2>> (GREP Publish)
Ваше приложение, кажется, выводится как STDERR и STDOUT (в противном случае вы должны получить только соответствие линий публикуют на вашем выходе). Он печатает отладочные сообщения (, отправляющих ... и , полученные ... ) к STDERR и фактические данные ( 810 54409956143. .. ) - stdout .


, по-видимому, вам нужны значения, разделенные запятыми, чтобы вы могли попробовать следующее, если вам нужен временные метки от линейного сопоставления , публикуют :

mosquitto_sub -d -t +/# 2>&1 | xargs -d$'\n' -L1 sh -c 'date "+%s,$0"' | \
sed -n "/PUBLISH/{N;s|[ /]|,|g;s|^\([^,]*,\)[^']*'\([^']*\)',.*\n[^,]*,\(.*\)|\1\2,\3|;p}"

или, если вам нужен временную метку от следующей строки:

mosquitto_sub -d -t +/# 2>&1 | xargs -d$'\n' -L1 sh -c 'date "+%s,$0"' | \
sed -n "/PUBLISH/{N;s|[ /]|,|g;s|^[^,]*,[^']*'\([^']*\)',.*\n\([^,]*,\)\(.*\)|\2\1,\3|;p}"

2> & 1 перенаправляются STDERR на STDOUT , вывод затем питается в xargs , который проходит каждую строку в качестве аргумента к следующей команде SH -C «Дата» +% S, $ 0 "' Итак, каждая линейка предложена с помощью временной техники + запятая, например:

[timestamp],Sending PINGREQ
[timestamp],Received PINGRESP
[timestamp],Received PUBLISH (d0, q0, r0, m0, 'm/NWRL/TMX/098/d/status', ... (39 bytes))
[timestamp],871,40114,4536 4536 323

Это затем трубопровод к SED , подавляя автоматическую печать ( -N ).
Для каждого сопоставления строки публикуют , добавьте N Ext Line, заменить каждое пространство и / с запятой тогда через группу, сохранить только первый или второй меток времени, Значения между цитатами и значениями после второго временного времени и, наконец, напечатают результат:

[timestamp],m,NWRL,TMX,098,d,status,871,40114,4536,4536,323
2
27.01.2020, 23:37

Я имитировал комара в среде bash/ksh и нашел

stub_mosquitto | 
   sed -e 's/.*m0, //' -e 's/, .*bytes))//' | while read line; do
      if [[ "${line}" = \'* ]]; then
         echo -n "${line}, "
      else
         echo "${line}, $(date)"
      fi
   done

здесь я использовал sed для резки интересных деталей.
Я использую во время чтения строки для простого способа соединения 2 строк (и добавления даты). Это возможно с sed или tr, но для этого может понадобиться некоторая работа (разные версии sed).

Я не совсем понимаю вызов mosquitto_sub, поэтому я показываю решение только тогда, когда строки проходят через трубу:

  • Что там делает #?
    . Без кавычек это должно быть началом комментария
  • Как получить строку с цифрами, когда вы grep для строки?
    . Цифры написаны на Стедрере? После перенаправления их в stdout с помощью 2>&1 grep пропустит их.
0
27.01.2020, 23:37

Теги

Похожие вопросы