sed在行尾创建^ M.

时间:2012-11-20 11:12:59

标签: sed centos

我在centos服务器上有一个脚本,我使用VIM在服务器上编写了脚本。该脚本用于编辑配置文件。当我在编辑后检查配置文件时,每行的末尾都有一个未编辑的^ M.编辑的行很好。

        cat hibernate.properties | 
    sed -i.bk \
    -e 's%\(^hibernate\.connection\.url\=ristor:jdbc:postgresql:\/\/127\.0\.0\.1/\).*%\'1$dbname'%' \
    -e 's/\(^hibernate\.connection\.username\=\).*/\'1$dbuser'/' \
    -e 's/\(^hibernate\.connection\.password\=\).*/\'1$pws'/' hibernate.properties

这是用于编辑配置文件的代码。为什么将^ M放在未编辑的每一行的末尾?

2 个答案:

答案 0 :(得分:0)

显示的^M可能是某些行上的窗口式行结尾。在运行脚本之前,尝试通过dos2unix运行文件。

例如:

dos2unix hibernate.properties

答案 1 :(得分:0)

这不太可能添加\r,更像是文件已经,但dos检测到vim文件格式。您的脚本实际上已从其触摸的每一行中删除,而vim不再考虑文件dos,因此会显示仍保留的回车符。一旦删除他们(%s/<Ctrl-V><Ctrl-M>$//vim应该这样做),不太可能再次发生。