grep -xv '.\{8,63\}' <input >output
grep
-x
обозначает совпадение всей строки , то есть любой сопоставленный шаблон должен определять линию от головы до хвоста. выполнение ...
grep -x pattern
... обычно эквивалентно ...
grep ^pattern$
grep
ключ -v
отменяет влияние шаблона на выбор строки. обычно выполнение ...
grep pattern
... будет выбирать только строки, которые соответствуют шаблону, но с отрицательным шаблоном -v
выбираются только те строки, которые не соответствуют .
... и так ...
grep -xv '.\{8,63\}'
... соответствует всем строкам, которые от начала до конца содержат от 8 до 63 символов, а -v
отрицательный выбор вызывает grep
только для вывода всего остального.
(Редактировать :обновлено на основе комментария @dirkt. спасибо)
Я нашел старое руководство для устройства, в котором объяснялось, что «обычно кабели связи используют только 3 контакта (RXD, TXD и GND ). Это устройство имеет контакт аппаратного сброса, который управляется сигналом DTR от хоста. "
Я подтвердил DTR = 1
, запустивsudo statserial /dev/ttyUSB0
:
Device: /dev/ttyUSB0 Signal Pin Pin Direction Status Full Name (25) (9) (computer) Name ----- --- --- --------- ------ ----- FG 1 - - - Frame Ground TxD 2 3 out - Transmit Data RxD 3 2 in - Receive Data RTS 4 7 out 1 Request To Send CTS 5 8 in 0 Clear To Send DSR 6 6 in 0 Data Set Ready GND 7 5 - - Signal Ground DCD 8 1 in 0 Data Carrier Detect DTR 20 4 out 1 Data Terminal Ready RI 22 9 in 0 Ring Indicator
Затем я изменил свой код C, чтобы установить DTR = 0, добавив следующее:
#include <sys/ioctl.h>
...
// then on connect, added the following:
int DTR_flag = TIOCM_DTR; // modem constant for DTR pin.
ioctl(fd, TIOCMBIC, &DTR_flag); // sets DTR = 0
[Спасибо @dirkt за помощь и всем за просмотр.]