I have a small script that cats the output from the ttyUSB to a file I would like to prepend a timestamp to each line. From the command line this does everything I want:
$ cat /dev/ttyUSB0 /home/pi/daily_logs/ttyUSSB0 | awk '{ print strftime("%Y-%m-%d %H:%M:%S"), $0; }
My issue is that when I add it to a script everything works but the awk timestamp isn't added. My script line looks like this:
cat < /dev/ttyUSB0 > /home/pi/daily_logs/ttyUSB0 | awk '{ print strftime("%Y-%m-%d %H:%M:%S"), $0; } &
Any help getting this going would be appreciated.
You need to redirect awk's output to the file, not cat's. The way you have it, awk gets nothing. Actually, you may not need cat at all:
awk '{ print strftime("%Y-%m-%d %H:%M:%S"), $0; }' /dev/ttyUSB0 > /home/pi/daily_logs/ttyUSB0 &
You need to put the > /home/pi/daily_logs/ttyUSB0 after the pipe. Like so:
cat < /dev/ttyUSB0 | awk '{ print strftime("%Y-%m-%d %H:%M:%S"), $0; }' > /home/pi/daily_logs/ttyUSB0
Useless use of cat is impeding the solution. To minimize the changes needed, you can also do:
< /dev/ttyUSB0 > /home/pi/daily_logs/ttyUSB0 awk '...' &
来源:https://stackoverflow.com/questions/14161552/add-timestamp-to-cat-output-from-shell-script