【发布时间】:2019-04-17 18:39:22
【问题描述】:
当我 cat 我的 aws 备份数据(与 $(aws s3 sync >> logfile) 一起收集)时,当我 'cat' 文件时数据看起来不错,但是如果我 'grep yada yada|sed yada yada backup.log > newfile ',然后通过管道将其发送到 'mail' 或使用 'vi' 查看它,它现在在标准输出中显示了额外的字符。示例:
[猫到标准输出]
$ cat aws.tail.log
Starting aws backup Wed Apr 17 00:01:01 EDT 2019
upload: zim/Beer/.zim/state.conf to s3://...
upload: Documents/testfile to s3://...
Completed aws backup Wed Apr 17 00:01:52 EDT 2019
[cat 重定向到文件]
$ cat aws.tail.log > aws.email.txt
$ vi aws.email.txt
here's what I see in vi:
Starting aws backup Wed Apr 17 00:01:01 EDT 2019
Completed 0 file(s) with ~0 file(s) remaining (calculating...)^M
Completed 2.5 KiB/~225.5 KiB (14.8 KiB/s) with ~3 file(s) remaining (calculating...)^Mupload: zim/Beer/.zim/state.conf to s3://
Completed 2.5 KiB/~225.5 KiB (14.8 KiB/s) with ~2 file(s) remaining (calculating...)^MCompleted 3.5 KiB/~225.5 KiB (3.5 KiB/s) with ~2 file(s) remaining (calculating...) ^Mupload: zim/Beer/h
ouse/tech/sterling/notifications.txt to s3://
Completed 226.1 KiB/~226.1 KiB (70.3 KiB/s) with ~0 file(s) remaining (calculating...)^M
Completed 0 file(s) with ~0 file(s) remaining (calculating...)^MCompleted 0 file(s) with ~0 file(s) remaining (calculating...)^MCompleted 0 file(s) with ~0 file(s) remaining (calculating...)
^MCompleted 0 file(s) with ~0 file(s) remaining (calculating...)^MCompleted 0 file(s) with ~0 file(s) remaining (calculating...)^MCompleted 0 file(s) with ~0 file(s) remaining (calculating..
.)^MCompleted 0 file(s) with ~0 file(s) remaining (calculating...)^MCompleted 0 file(s) with ~0 file(s) remaining (calculating...)^MCompleted 0 file(s) with ~0 file(s) remaining (calculating
...)^MCompleted 0 file(s) with ~0 file(s) remaining (calculating...)^M
当我使用 $(cat daily_stats.txt |mail -s "subject" $EMAIL) 发送电子邮件或也使用 $(mail -s "subject" $EMAIL 发送电子邮件时,这也会显示在电子邮件正文中
我已经尝试过滤掉 ^M 字符,但它只能这样做。也试过: sed -r "s/\x1B[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g" 和 perl -p -e 's/\r//g'
还有多余的行(已完成 0 个文件,剩余约 0 个文件(正在计算...)^M)
有人知道如何将我从“猫”看到的标准输出转换为电子邮件或文本文件,而不需要额外的爵士乐吗?
谢谢!
【问题讨论】:
-
没有很好的方法可以做到这一点。您应该首先禁用
aws s3 sync中的进度和格式,例如与--no-progress和/或--color off。当 stdout 是一个文件时它不会自动执行此操作这一事实是他们方面的一个错误