Сохранить часть вывода терминала
Я использую 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
Это оставит вас с файлом, содержащим всегда двухбайтовое шестнадцатеричное значение на строку, из которого вы затем сможете двигаться дальше.