0

我正在尝试制作一个脚本,将数据从串行端口重定向到另一个。
我已经使用这个命令实现了它:

cat /dev/ttyS0 > /dev/ttyS1

一切正常,但现在我还要记录数据。我以为我会使用以下tee命令:   

cat /dev/ttyS0 | tee /dev/ttyS1 log.txt

现在我想确保每次记录在日志文件中时都应该以"from S0 to S1:"我试过的字符串开头:

cat /dev/ttyS0 | tee /dev/ttyS1 | sed 's/$/from S0 to S1/' | less > log.txt

但它不起作用,文件仍然是空的。我在哪里做错了?

4

2 回答 2

1

尝试:

cat /dev/ttyS0 | tee /dev/ttyS1 | sed 's/^/from S0 to S1: /' | tee log.txt

由于您想用字符串作为该行的前缀$,因此in yoursed已被替换为^. 替换的输出被发送到STDOUT可以作为 的输入tee

于 2013-06-26T12:27:09.310 回答
0

不确定这是否有帮助,但我会从管道中删除寻呼机并将sed输出直接重定向到文件。此外,如果要添加文本,则需要匹配行首 ( ^) 而不是行尾 ( $)。

... | sed 's/^/from S0 to S1: /' > log.txt

另外,输入首先看起来像什么?它是否包含模式可以匹配的换行符?

于 2013-06-26T12:29:54.677 回答