Сохранить часть вывода терминала

Я использую Ubuntu, чтобы получить вывод от устройства BLE, и в терминале я получаю непрерывный поток значений. Единственная проблема заключается в том, что им предшествует бесполезная строка (я читаю характеристики устройства BLE, поэтому у них есть "дескриптор уведомления = значение 0x000c: FF FF"). Мне нужны только шестнадцатеричные строки в конце для моих данных.

В настоящее время я регистрирую окно вывода терминала, используя скрипт, а затем из созданного текстового файла извлекаю шестнадцатеричные значения и преобразую их в напряжения, которые я затем строю. Однако мне нужно выполнить обе эти команды, поэтому я эффективно делаю скриншоты данных.

Мне интересно, был ли какой-то способ только записать шестнадцатеричные значения в файл.dat и манипулировать ими, потому что тогда я действительно смогу построить данные в реальном времени. Если вы, ребята, знаете какую-либо альтернативу для получения графика данных в режиме реального времени, дайте мне знать.

2 ответа

Вот несколько вариантов, которые вы можете попробовать:

yourcommand | sed 's/.*: //' > file.dat

yourcommand | cut -d: -f2 > file.dat

yourcommand | awk -F: '{print $2}' > file.dat

yourcommand | grep -Eo '[[:xdigit:]]{2} [[:xdigit:]]{2}$' > file.dat

Вы можете передать вывод в каждой строке через awk следующим образом:

echo "Notification handle = 0x000c value: FF FF" | awk '{print $6, $7}'

что приведет к такому выводу:

FF FF

другой канал позволит вам поместить это в файл, добавив

echo "Notification handle = 0x000c value: FF FF" | awk '{print $6, $7}' | tee -a values.dat

Это оставит вас с файлом, содержащим всегда двухбайтовое шестнадцатеричное значение на строку, из которого вы затем сможете двигаться дальше.

Другие вопросы по тегам