中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux中怎么刪除文本中的回車字符

發布時間:2021-09-04 14:24:16 來源:億速云 閱讀:169 作者:chen 欄目:系統運維

本篇內容介紹了“Linux中怎么刪除文本中的回車字符”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!



“回車”字符可以往回追溯很長一段時間 ——  早在打字機上就有一個機械裝置或杠桿將承載紙滾筒的機架移到右邊,以便可以重新在左側輸入字母。他們在 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 來輸入 ^Ms 是替換命令。斜杠將我們要查找的文本(Ctrl + M)和要替換的文本(這里為空)分開。

vi

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

:%s/^M//g

“Linux中怎么刪除文本中的回車字符”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

易门县| 乐东| 治多县| 隆德县| 南川市| 清丰县| 兰西县| 巴楚县| 凯里市| 康保县| 那坡县| 太保市| 永寿县| 涞水县| 长海县| 夏邑县| 西贡区| 临西县| 东宁县| 海林市| 垦利县| 射阳县| 天台县| 辽宁省| 河西区| 武乡县| 新源县| 泽库县| 余干县| 务川| 文山县| 旌德县| 虹口区| 宁安市| 伽师县| 类乌齐县| 拉孜县| 田东县| 平凉市| 静乐县| 临高县|