幾種在 Linux 中刪除文字中回車字元的簡單方法

當回車字元(Ctrl+M)讓你緊張時,別擔心。有幾種簡單的方法消除它們。“回車”字元可以往回追溯很長一段時間 —— 早在打字機上就有一個機械裝置或槓桿將承載紙滾筒的機架移到右邊,以便可以重新在左側輸入字母。

他們在 Windows 上的文字檔案上保留了它,但從未在 Linux 系統上使用過。當你嘗試在 Linux 上處理在 Windows 上建立的檔案時,這種不相容性有時會導致問題,但這是一個非常容易解決的問題。

如果你使用 od(八進位制轉儲octal dump)命令檢視檔案,那麼回車(也用 Ctrl+M 代表)字元將顯示為八進位制的 15。字元 CRLF 通常用於表示 Windows 文字檔案中的一行結束的回車符和換行符序列。那些注意看八進位制轉儲的會看到 \r\n。相比之下,Linux 文字僅以換行符結束。

這有一個 od 輸出的示例,高亮顯示了行中的 CRLF 字元,以及它的八進位制。

$ od -bc testfile。txt0000000 124 150 151 163 040 151 163 040 141 040 164 145 163 164 040 146 T h i s i s a t e s t f0000020 151 154 145 040 146 162 157 155 040 127 151 156 144 157 167 163 i l e f r o m W i n d o w s0000040 056 015 012 111 164 047 163 040 144 151 146 146 145 162 145 156 < == 。 \r \n I t ‘ s d i f f e r e n <==0000060 164 040 164 150 141 156 040 141 040 125 156 151 170 040 164 145 t t h a n a U n i x t e0000100 170 164 040 146 151 154 145 015 012 167 157 165 154 144 040 142 <== x t f i l e \r \n w o u l d b <==

雖然這些字元不是大問題,但是當你想要以某種方式解析文字,並且不希望就它們是否存在進行編碼時,這有時候會產生干擾。

3 種從文字中刪除回車符的方法

幸運的是,有幾種方法可以輕鬆刪除回車符。這有三個選擇:

dos2unix

你可能會在安裝時遇到麻煩,但 dos2unix 可能是將 Windows 文字轉換為 Unix/Linux 文字的最簡單方法。一個命令帶上一個引數就行了。不需要第二個檔名。該檔案會被直接更改。

$ dos2unix testfile。txtdos2unix: converting file testfile。txt to Unix format。。。

你應該會發現檔案長度減少,具體取決於它包含的行數。包含 100 行的檔案可能會縮小 99 個字元,因為只有最後一行不會以 CRLF 字元結尾。

之前:

-rw-rw-r—— 1 shs shs 121 Sep 14 19:11 testfile。txt

之後:

-rw-rw-r—— 1 shs shs 118 Sep 14 19:12 testfile。txt

如果你需要轉換大量檔案,不用每次修復一個。相反,將它們全部放在一個目錄中並執行如下命令:

$ find 。 -type f -exec dos2unix {} \;

在此命令中,我們使用 find 查詢常規檔案,然後執行 dos2unix 命令一次轉換一個。命令中的 {} 將被替換為檔名。執行時,你應該處於包含檔案的目錄中。此命令可能會損壞其他型別的檔案,例如除了文字檔案外在上下文中包含八進位制 15 的檔案(如,映象檔案中的位元組)。

sed

你還可以使用流編輯器 sed 來刪除回車符。但是,你必須提供第二個檔名。以下是例子:

$ sed -e “s/^M//” before。txt > after。txt

一件需要注意的重要的事情是,請不要輸入你看到的字元。你必須按下 Ctrl+V 後跟 Ctrl+M 來輸入 ^M。s 是替換命令。斜槓將我們要查詢的文字(Ctrl + M)和要替換的文字(這裡為空)分開。

vi

你甚至可以使用 vi 刪除回車符(Ctrl+M),但這裡假設你沒有開啟數百個檔案,或許也在做一些其他的修改。你可以鍵入 : 進入命令列,然後輸入下面的字串。與 sed 一樣,命令中 ^M 需要透過 Ctrl+V 輸入 ^,然後 Ctrl+M 插入 M。%s 是替換操作,斜槓再次將我們要刪除的字元和我們想要替換它的文字(空)分開。 g(全域性)意味在所有行上執行。

:%s/^M//g

總結

dos2unix 命令可能是最容易記住的,也是從文字中刪除回車的最可靠的方法。其他選擇使用起來有點困難,但它們提供相同的基本功能。

原文連結:https://www。linuxprobe。com/how-linux-delete。html