如何过滤 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 }
'
我有一个设备,我可以使用屏幕记录它的输出:
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 }
'