在不同的服務(wù)器系統(tǒng)中處理文本編輯器中的換行符的方式也不相同。例如,Windows使用一個特定的回車(CR),在Linux上被描述為^M,然后是換行(LF)來表示換行。另一方面,Linux和UNIX只使用換行來表示行的結(jié)束。這在將文件從Windows傳輸(比如復(fù)制和粘貼過來的文件)到Linux時經(jīng)常會引起問題。這些細節(jié)問題很難發(fā)現(xiàn),讓人不明白為什么他們的配置文件不能用。
上面截圖顯示了vi編輯器中的藍色回車符。
在此Linux快速技巧中,我們將向您展示如何在Linux服務(wù)器命令行上識別和刪除Window回車。
一、如何識別Linux中的^M字符?
在我們討論如何刪除^M回車之前,重要的是要知道如何找到它們。cat命令和大多數(shù)文本編輯器默認不顯示^M回車。
正如你所看到的,文件看起來非常正?!,F(xiàn)在讓我們?yōu)閏at添加-v選項,允許它顯示非打印字符。
現(xiàn)在我們可以看到每行末尾的^M(carat M)回車。如果這是一個配置文件,服務(wù)可能會失敗啟動和/或提示語法錯誤。
如果你想在vi編輯器中看到^M,你可以像這樣傳遞-b(二進制模式)選項。
vi -b Windows-text-file.txt
或者,如果您已經(jīng)在vi / vim中打開了文件,則可以發(fā)出:e ++ff=unix命令。
二、如何刪除Linux中的^M(CTRL-M)字符?
有幾種方法可以在Linux命令行中刪除文件中的^M字符。第一個也是最簡單的方法是使用dos2unix命令。dos2unix命令是一個出色的實用程序,可以輕松地將文件轉(zhuǎn)換為Unix格式。這個小工具非常適合這種情況,它可以去除回車,而不需要很多難記的開關(guān)。只需像這樣把文件名傳給這個實用程序。
另一種刪除它們的方法是使用vi或vim。就像我們使用 :e ++ff=unix vi 命令查看 ^M 回車一樣,我們可以使用 :set ff-unix 命令在文件加載到 vi 編輯器后刪除它們。
下面是一個使用sed從文件中刪除^M回車的例子。
sed -i “s/r//g” Windows-text-file.txt
一旦你知道Windows格式化的文本文件的存在,處理它們是相當直接的。這篇文章介紹了為什么在Windows上創(chuàng)建的文件中會出現(xiàn)討厭的^M回車符的基本知識。我們還討論了幾種從Linux或UNIX文件中刪除^M字符的方法。