2013-06-12 90 views
1

沒有找到我創建了一個bash腳本:錯誤問:命令上的Vim

#!/bin/bash 
su root -c vim $1 -c ':%s/^M//g' -c 'wq' 

我的腳本必須刪除所有的^ M在我的文件(Windows回車),然後將其保存。

當我執行我的腳本,它返回:

/sequenceFiles/Sequence1.seq: wq: command not found 

是否有人知道爲什麼嗎? 感謝您的幫助。

+1

有一個叫['tofrodos包'](http://www.thefreecountry.com/tofrodos/index.shtml)..使用此包中的'fromdos'作爲此 – hek2mgl

+1

您可能還有像'dos2unix'這樣的utils。 – devnull

回答

3

-csu,不vim看到,殼抱怨未知的命令。

您需要爲一個參數傳遞命令su

su root -c "vim $1 -c ':%s/^M//g' -c 'wq'" 
+0

非常感謝! – Kaijiro

+0

現在,我遇到了一個問題:當我執行我的腳本時,它返回給我這個錯誤:E486:找不到模式。但^ M存在於我的文件中。爲什麼? – Kaijiro

+0

Vim(在Unix上)可以檢測和處理CR-LF行尾,請參閱':help'fileformat'',這就是爲什麼沒有顯示'^ M',並且這也解釋了E486。你的問題是關於su + Vim調用錯誤,所以請不要不接受並將其轉變爲長時間的故障排除會話!正如評論所證明的那樣,無論如何你都不應該使用Vim。 –

1

man su說:

`-c COMMAND' 
`--command=COMMAND' 
    Pass COMMAND, a single command line to run, to the shell with a 
    `-c' option instead of starting an interactive shell. 

嘗試

su root -c "vim $1 -c ':%s/^M//g' -c 'wq'" 
0

雖然你可以用vim做到這一點,考慮簡單:

perl -pi -e 's/\r\n/\n/' file