3

我有一个小脚本,可以将 ttyUSB 的输出转换为我想在每行前面加上时间戳的文件。从命令行这可以完成我想要的一切:

$ cat /dev/ttyUSB0 /home/pi/daily_logs/ttyUSSB0 | awk '{ print strftime("%Y-%m-%d %H:%M:%S"), $0; }

我的问题是,当我将它添加到脚本时,一切正常,但未添加 awk 时间戳。我的脚本行如下所示:

cat < /dev/ttyUSB0 > /home/pi/daily_logs/ttyUSB0 | awk '{ print strftime("%Y-%m-%d %H:%M:%S"), $0; } &

任何帮助,将不胜感激。

4

3 回答 3

7

您需要将 awk 的输出重定向到文件,而不是 cat 的。按照你的方式,awk 一无所获。实际上,您可能根本不需要 cat

awk '{ print strftime("%Y-%m-%d %H:%M:%S"), $0; }' /dev/ttyUSB0 > /home/pi/daily_logs/ttyUSB0 &
于 2013-01-04T17:14:45.423 回答
1

您需要将 > /home/pi/daily_logs/ttyUSB0 放在管道之后。像这样:

cat < /dev/ttyUSB0 | awk '{ print strftime("%Y-%m-%d %H:%M:%S"), $0; }' > /home/pi/daily_logs/ttyUSB0

于 2013-01-04T17:16:16.183 回答
0

无用的使用 cat 阻碍了解决方案。为了最大限度地减少所需的更改,您还可以执行以下操作:

< /dev/ttyUSB0 > /home/pi/daily_logs/ttyUSB0 awk '...' &
于 2013-01-04T19:03:12.137 回答