點擊右邊

若何在Linux中刪除文本中的歸猴塞雷車字符

捕魚達人交易

當歸車字符(Ctrl+M)讓你重要時,別憂慮。有幾種簡略的要領打消它們。

“歸車”字符可以去歸追溯很長一段時間 —— 早在打字機上就有一個機器安裝或者杠桿將承載紙滾筒的機架移到右側,以便可以從新在左邊輸出字母。他們在 Windows 上的文本文件上保留了它,但從未在 Linux 體系上使用過。當你測驗考試在 Linux 上處置在 Windows 上創立的文件時,這類不兼容性偶然會致使成績,但這是一個特別很是輕易辦理的成績。
若是你使用 od(八進制轉儲octal dump)下令查望文件,那末歸車(也用 Ctrl+M 代表)字符將顯示為八進制的 15。字符 CRLF 平日用于透露表現 Windows 文本文件中的一行收場的歸車符以及換行符序列。那些注重望八進制轉儲的會望到 \r\n。相比之下,Linux 文本僅以換行符收場。
這有一個 od 輸入的示例,高亮顯示了行中的 CRLF 字符,和它的八進制。

  1. $ od -bc testfile.txt
  2. 0000000 124 150 1捕魚達人攻略51 163 040 151 163 040 141 040 164 145 163 164 040 146
  3. T h i s i s a t e s t f
  4. 0000020 151 154 145 040 146 162 157 155 040 127 151 156 144 157 167 163
  5. i l e f r o m W i 妞妞一直輸 n d線上麻將朋友 o w s
  6. 0000040 056 015 012 111 164 047 163 040 144 151 146 146 145 162 145 156 <==
  7. . \r \n I t ' s d i f f e r e n <==
  8. 0000060 164 040 164 150 141 156 040 141 040 125 156 151 170 040 164 145
  9. t t h a n a U 妞妞撲克牌ptt n i x t e
  10. 0000100 170 164 040 146 151 154 145 015 012 167 157 165 154 144 040 142 <==
  11. x t f i l e \r \n w o u l d b <==

固然這些字符不是大成績,然則當你想要以某種方式剖析文本,而且不但愿就它們是否存在進行編碼時,這偶然候會發生滋擾。

3 種從文本中刪除歸車符的要領

榮幸的是,有幾種要領可以輕松刪除歸車符。這有三個選擇:

dos2unix

你可能會在裝置時碰到貧苦,但 dos2unix 多是將 Windows 文本轉換為 Unix/Linux 文本的最簡略要領。一個下令帶上一個參數就行了。不必要第二個文件名。該文件會被間接變動。

  1. $ dos2unix testfile.txt
  2. 威力彩開獎時間是幾點dos2unix: converting file testfile.txt to Unix format...

你應當會發明文件長度淘汰,詳細取決于它包括的行數。包括 100 行的文件可能會放大 99 個字符,由于只有最初一行不會以 CRLF 字符結尾。
之前:

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

以后:

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

若是你必要轉換大批文件,不消每次修復一個。相反,將它們掃數放在一個目次中并運轉以下下令:

  1. $ find . -type f -exec dos2unix {} \;

在此下令中,咱們使用 find 查找慣例文件,然后運轉 dos2unix 下令一次轉換一個。下令中的 {} 將被替代為文件名。運轉時,你應當處于包括文件的目次中。此下令可能會破壞其余類型的文件,例如除了文本文件外在上下文中包括八進制 15 的文件(如,鏡像文件中的字節)。

sed

你還可以使用流編纂器 sed 來刪除歸車符。然則,你必需供應第二個文件名。如下是例子:

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

一件必要注重的緊張的工作是,請不要輸出你望到的字符。你必需按下 Ctrl+V 后跟 Ctrl+M 來輸出 ^Ms 是替代下令。斜杠將咱們要查找的文本(Ctrl + M)以及要替代的文本(這里為空)分開。

vi

你甚至可以使用 vi 刪除歸車符(Ctrl+M),但這里假定你沒有關上數百個文件,或者許也在做一些其余的點竄。你可以鍵入 : 進入下令行,然后輸出上面的字符串。與 sed 同樣,下令中 ^M 必要經由過程 Ctrl+V 輸出 ^,然后 Ctrl+M 拔出 M%s 是替代操作,斜杠再次將咱們要刪除的字符以及咱們想要替代它的文本(空)分開。 g(全局)象征在一切行上履行。

  1. :%s/^M//g

總結

【免責聲明】本站內容轉載自互聯網,其相關談吐僅代表作者小我私家概念盡非權勢巨子,不代表本站態度。如您發明內容存在版權成績,請提交相關鏈接至郵箱:,咱們將實時予以處置。