小编per*_*xed的帖子

使用 Moreutils ts 进行管道铺设

我在串行端口有一个传入流,新行大约每秒出现一次

wren@Raven:~$ cat /dev/ttyUSB0

A_Sensor1,B_22.00,C_50.00

A_Sensor1,B_22.00,C_50.00

A_Sensor1,B_22.00,C_50.00

A_Sensor1,B_22.00,C_50.00

A_Sensor1,B_22.00,C_50.00
Run Code Online (Sandbox Code Playgroud)

我想去除空行并对其余部分进行时间戳。

sed 将剔除空行并添加时间戳,但我无法更新时间戳,它只报告调用它的时间:

wren@Raven:~$ cat /dev/ttyUSB0 | sed -e '/^$/d' -e "s/$/`date +\,%F\,%T`/"
A_Sensor1,B_22.00,C_50.00,2014-05-14,09:44:42
A_Sensor1,B_22.00,C_50.00,2014-05-14,09:44:42
A_Sensor1,B_22.00,C_50.00,2014-05-14,09:44:42
A_Sensor1,B_22.00,C_50.00,2014-05-14,09:44:42
A_Sensor1,B_22.00,C_50.00,2014-05-14,09:44:42
A_Sensor1,B_22.00,C_50.00,2014-05-14,09:44:42
A_Sensor1,B_22.00,C_50.00,2014-05-14,09:44:42
^C
Run Code Online (Sandbox Code Playgroud)

我找到了 ts,Moreutils 的一部分,并且可以通过管道输入它以获得更新时间戳。

wren@Raven:~$ cat /dev/ttyUSB0 |  ts
May 14 09:49:26 A_Sensor1,B_22.00,C_50.00
May 14 09:49:26
May 14 09:49:27 A_Sensor1,B_22.00,C_50.00
^C
Run Code Online (Sandbox Code Playgroud)

但是,我无法将 ts 与 sed 正确结合。

这看起来应该做我想做的事,根本不产生任何输出

wren@Raven:~$ cat /dev/ttyUSB0 | sed -e '/^$/d' | ts
^C
wren@Raven:~$
Run Code Online (Sandbox Code Playgroud)

然而,颠倒管道的顺序确实会产生输出,但当然不会去除不再空白的线条。其他替换工作正常,所以我知道 sed 的管道正在工作。

wren@Raven:~$ cat /dev/ttyUSB0 |  ts | sed -e '/^$/d'
May …
Run Code Online (Sandbox Code Playgroud)

command-line pipe sed

9
推荐指数
1
解决办法
2121
查看次数

标签 统计

command-line ×1

pipe ×1

sed ×1