Как распарсить вывод candump

12 декабря 2022 667 admin

Как распарсить вывод candump


Встала задача распарсить вывод candump'а.
Изначально, вывод candump'а выглядит следующим образом:

http//freeserver.su/uploads/images/NetBSD/candump-default.jpg

Нужно получить значения последних 8 столбцов отдельными переменными.
Будем в цикле парсить вывод команды 'candump vcan0' и разбирать по столбцам:

Пишем следующий скрипт в shell:
#!/bin/sh
candump vcan0 | while read col1 col2 col3 col4 col5 col6 col7 col8 col9 col10 col11
do
echo '$col1='$col1
echo '$col2='$col2
echo '$col3='$col3
echo '$col4='$col4
echo '$col5='$col5
echo '$col6='$col6
echo '$col7='$col7
echo '$col8='$col8
echo '$col9='$col9
echo '$col10='$col10
echo '$col11='$col11
done

И у нас выведутся значения столбцов отдельными переменными:

http//freeserver.su/uploads/images/NetBSD/candump-parse-by-default.jpg

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

Отвечает за это товарищ IFS (Internal Field Separator); переменной окружения, которая позволяет указывать разделители полей.

Изменить значение IFS можно следующим образом:
IFS=$'\n' 
$ - обозначение, что это переменная;
\n- назначаемый разделитель, в данном случае - перевод каретки (он же Enter).

Перепишем наш скрипт, используя разделителем знак '`'(обратный апостроф или гравис, включается при помощи нажатия клавиши ё при включенной латинской раскладке клавиатуры), вместо пробела.
Потому что с таким разделителем candump может выдавать данные, если запустить с ключом 'candump -S':
http//freeserver.su/uploads/images/NetBSD/candump-S.jpg
#!/bin/sh
IFS=$'`'
candump -S vcan0 | while read col1 col2 col3 col4 col5 col6 col7 col8 col9 col10 col11
do
echo '$col1='$col1
echo '$col2='$col2
echo '$col3='$col3
echo '$col4='$col4
echo '$col5='$col5
echo '$col6='$col6
echo '$col7='$col7
echo '$col8='$col8
echo '$col9='$col9
echo '$col10='$col10
echo '$col11='$col11
done

Вывод:
http//freeserver.su/uploads/images/NetBSD/candump-parse-with-gravis.jpg

Сравним результаты - они различаются!)

Произошло это из-за того, что в строке, который мы должны были парсить, были разные - СМЕШАННЫЕ - разделители!
Но так как во втором случае мы явно указали разделителем обратный апостроф, то и парсинг начался с обратного апострофа.
Причем, парсинг начинается с первой встречи знака разделителя.
Из-за чего, наши переменные "поехали": вместо нужных col4, col5, col6, col7, col8, col9, col10, col11 - мы получили разнобой переменных и значений.

Поэтому, будьте внимательны с разделителем!
  • 0

Другие новости по теме:

Другие новости по теме:

    Добавление комментария

    Имя:
    Пароль:
    Email:
    Код:
    captcha
    Введите код:

    Последнии комментарии
    движок для сайта бесплатные движки для сайтов
    Автор Cornell (18.07.2025)
    I am sure this paragraph has touched all the inter...
    движок для сайта бесплатные движки для сайтов
    Автор Tracey (18.07.2025)
    Excellent post. I was checking continuously this b...
    движок для сайта бесплатные движки для сайтов
    Автор vovan casino онлайн (18.07.2025)
    My spouse and I stumbled over here by a different...
    движок для сайта бесплатные движки для сайтов
    Автор vovan casino онлайн (18.07.2025)
    My spouse and I stumbled over here by a different...
    движок для сайта бесплатные движки для сайтов
    Автор ramenbet casino (18.07.2025)
    I will right away grab your rss feed as I can not ...
    движок для сайта бесплатные движки для сайтов
    Автор ramenbet casino (18.07.2025)
    I will right away grab your rss feed as I can not ...
    движок для сайта бесплатные движки для сайтов
    Автор Вован бесплатные спины (17.07.2025)
    I'm gone to inform my little brother, that he shou...
    движок для сайта бесплатные движки для сайтов
    Автор Stan (17.07.2025)
    I am now not certain the place you're getting your...
    движок для сайта бесплатные движки для сайтов
    Автор Ezekiel (16.07.2025)
    Islamic University of Al Madinah is unrelated to U...
    движок для сайта бесплатные движки для сайтов
    Автор Meri (16.07.2025)
    I know this web page gives quality based articles ...
     Популярные
       
    Календарь
    « Июль »
    Пн Вт Ср Чт Пт Сб Вс
    1 2 3 4 5 6
    7 8 9 10 11 12 13
    14 15 16 17 18 19 20
    21 22 23 24 25 26 27
    28 29 30 31
    Облако тегов
    Яндекс.Метрика