如何过滤 gnu-screen 写入日志的行

How to filter lines written to log by gnu-screen

我有一个设备,我可以使用屏幕记录它的输出:

screen -L log.txt /dev/ttyUSB0 115200

和 log.txt 文件将包含如下条目:

Seconds:      2001.609
Centigrade:   38.780
Humidity %:   29.534

Seconds:      2002.756
Centigrade:   38.950
Humidity %:   29.274

每个数据块之间有一个空行。我想删除空行和秒行以获得:

Centigrade:   38.780
Humidity %:   29.534
Centigrade:   38.950
Humidity %:   29.274

有没有办法用屏幕做这个?还是 post 处理是唯一的选择?如果 grep 可以是 运行 那么我还可以添加一个 awk 来生成:

2001.609, 38.780, 29.534
2002.756, 38.950, 29.274

screen 是记录日志的最佳工具吗?好像不是。

如果您不打算与设备交互,那么您可以直接使用 awk </dev/ttyUSB0 '....' 直接读取并提取所需的字段。您可以先使用 stty -F /dev/ttyUSB0 115200 设置速度,也许还可以同时选择其他 stty 选项,例如 raw -echo

stty -F /dev/ttyUSB0 115200
awk </dev/ttyUSB0  '
 /^Seconds:/    { s = ; next }
 /^Centigrade:/ { c = ; next }
 /^Humidity %:/ { h = ; printf "%s, %s, %s\n",s,c,h }
'