есть ли способ сделать line-buffer cat? Например, я хочу наблюдать за устройством UART, и я хочу видеть его сообщение только тогда, когда есть целая строка. Могу ли я сделать что-то вроде:
cat --line-buffered /dev/crbif0rb0c0ttyS0
Спасибо.
есть ли способ сделать line-buffer cat? Например, я хочу наблюдать за устройством UART, и я хочу видеть его сообщение только тогда, когда есть целая строка. Могу ли я сделать что-то вроде:
cat --line-buffered /dev/crbif0rb0c0ttyS0
Спасибо.
Нет, но GNU grep с --line-buffered
может это сделать. Просто найдите что-то, что есть в каждой строке, например '^'
.
cat /dev/crbif0rb0c0ttyS0 | grep . --line-buffered
, но печатаются только пустые строки. Если подставлю UART-устройство на обычный файл, то все ок. Любые идеи по этому поводу?
- person Jinghao Shi; 04.05.2012
cat /dev/crbif0rb0c0ttyS0 | grep ^ --line-buffered
, и это работает! Хотя не знаю почему...
- person Jinghao Shi; 04.05.2012
Вы также можете использовать bash в своих интересах здесь:
cat /dev/crbif0rb0c0ttyS0 | while read line; do echo $line; done
Поскольку команда read
считывает строку за раз, она будет выполнять буферизацию строк, которую не выполняет cat
.
cat
, если вы используете этот метод.
- person Ignacio Vazquez-Abrams; 04.05.2012
Пропустите его через perl в режиме буферизации строк:
perl -pe 1 /dev/whatever