'cat file' 标准输出不同于 'cat file > textfile'
'cat file' stdout differs from 'cat file > textfile'
当我 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" $电子邮件
我试过过滤掉 ^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)
任何人都知道如何将我从 'cat' 看到的标准输出转换为电子邮件或文本文件而不需要额外的爵士乐?
谢谢!
这应该有效:
cat aws.tail.log | col -b > aws.email.txt
我建议针对编写此日志的工具提交有关自动检测非终端和不使用控制字符的错误。
当我 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" $电子邮件
我试过过滤掉 ^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)
任何人都知道如何将我从 'cat' 看到的标准输出转换为电子邮件或文本文件而不需要额外的爵士乐?
谢谢!
这应该有效:
cat aws.tail.log | col -b > aws.email.txt
我建议针对编写此日志的工具提交有关自动检测非终端和不使用控制字符的错误。