2012-11-20 32 views
0

我在一個centos服務器上有一個腳本,並使用VIM在服務器上編寫腳本。該腳本用於編輯配置文件。當我在編輯配置文件後檢查配置文件時,在沒有編輯的每一行末尾都有一個^ M。編輯過的行很好。sed在行尾創建^ 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放在每一行未編輯的末尾?

+0

也許源文件本身有^ M。使用dos2unix刪除ctrol-M – Guru

+0

在vim':set ff = unix' –

回答

0

顯示的^M可能是某些行上的窗口樣式的行尾。嘗試在運行腳本之前通過dos2unix運行您的文件。

例如:

dos2unix hibernate.properties 
0

這是不太可能加\r,它更像是文件他們了,但被vim檢測爲dos FILEFORMAT。你的腳本實際上刪除了它從它觸及的每一​​行中刪除,並且vim不再考慮文件dos,因此顯示仍然保留的回車。一旦刪除它們(%s/<Ctrl-V><Ctrl-M>$//vim應該這樣做),它不太可能再次發生。