Linux和Windows和換行符不一樣。Windows下是CRLF(\r\n或0d0a),Linux下是LF(\n或0a)。在Linux下有時會遇到從Windows過來的文本檔案,這些檔案帶了Windows換行符,Linux下進行腳本處理時有可能會出一些莫名其妙的錯誤。是以需要将這些檔案轉換為Linux換行符。
之前都是用dos2unix指令轉換,但是很多系統沒裝這個指令。百度一下,也有人用一個叫tofrodos的指令,但是我的系統上也沒裝這個指令。
但是,為一個小小的換行符轉換何至于勞師動衆安裝什麼軟體。況且我的伺服器與外網隔絕,安裝軟體不是一個簡單的yum就可搞定的。
是以,我采用了Linux自帶的sed指令完成相同的任務。
單個的檔案裝換
sed -i 's/\r//' filename
批量的檔案裝換
sed -i 's/\r//' filename1 filename2 ...
或
find conf/ -name "*.*" |xargs sed -i 's/\r//'
轉換舉例:
[root@zabbix ~]## echo -e 'a\n\r\b'>file1
[root@zabbix ~]## file file1
file1: ASCII text, with CR, LF line terminators, with overstriking
[root@zabbix ~]## sed -i 's/\r//' filename
file1: ASCII text, with overstriking