天天看點

Linux下轉換Windows換行符

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

繼續閱讀