0

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

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

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

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

反正有没有用屏幕做到这一点?还是后处理是唯一的选择?如果可以运行 grep,那么我还可以添加 awk 来生成:

2001.609, 38.780, 29.534
2002.756, 38.950, 29.274

screen 是记录此日志的最佳工具吗?似乎没有。

4

1 回答 1

0

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

stty -F /dev/ttyUSB0 115200
awk </dev/ttyUSB0  '
 /^Seconds:/    { s = $2; next }
 /^Centigrade:/ { c = $2; next }
 /^Humidity %:/ { h = $3; printf "%s, %s, %s\n",s,c,h }
'
于 2019-07-24T21:15:01.407 回答