^ M char在使用echo时创建了额外的新行邮件

时间:2012-08-02 08:38:39

标签: linux bash echo

我有一个看起来像这样的文件:

> cat my.txt
This is sentence 1.
This is sentence 2.
<empty line>
This is sentence 3.

在我的bash脚本中,当我添加尝试通过电子邮件发送文件时,会出现一个额外的行。

#!/bin/bash
outf="/tmp/my.txt"
action=`cat $outf`
echo $action | mail -s "my test" emailid@mail.com

这就是电子邮件的样子:

This is sentence 1.
<empty line>
This is sentence 2.
<empty line>
<empty line>
This is sentence 3.
<empty line>

如何删除多余的空行?

2 个答案:

答案 0 :(得分:1)

在Unix中,字符音译工具'tr'存在

删除CR = 13(dec)= 0D(hex)= 15(oct):

tr -d '\015' < infile.txt > outfile.txt

删除LF = NL = 10(dec)= 12(oct)

tr -d '\012' < infile.txt > outfile.txt

删除两者:

tr -d '\015\012' < infile.txt > outfile.txt

不太确定这在linux中是如何工作的,但是:http://linux.about.com/library/cmd/blcmdl1_tr.htm

答案 1 :(得分:0)

使用-n选项:

$ echo -n foo

这将取消新行。