我有一个设备,我可以使用screen记录它的输出:
screen -L log.txt /dev/ttyUSB0 115200log.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有没有办法用screen做到这一点?还是说后期处理是唯一的选择?如果可以运行grep,那么我还可以添加一个awk来生成:
2001.609, 38.780, 29.534
2002.756, 38.950, 29.274screen是记录日志的最佳工具吗?看起来不是。
发布于 2019-07-25 05:15:01
如果您不打算与设备交互,那么您可以使用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 }
'https://stackoverflow.com/questions/57152639
复制相似问题