本篇內(nèi)容介紹了“Linux中怎么刪除文本中的回車字符”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
懷安網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),懷安網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為懷安成百上千提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)營銷網(wǎng)站建設(shè)要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的懷安做網(wǎng)站的公司定做!
“回車”字符可以往回追溯很長(zhǎng)一段時(shí)間 —— 早在打字機(jī)上就有一個(gè)機(jī)械裝置或杠桿將承載紙滾筒的機(jī)架移到右邊,以便可以重新在左側(cè)輸入字母。他們?cè)?Windows 上的文本文件上保留了它,但從未在 Linux 系統(tǒng)上使用過。當(dāng)你嘗試在 Linux 上處理在 Windows 上創(chuàng)建的文件時(shí),這種不兼容性有時(shí)會(huì)導(dǎo)致問題,但這是一個(gè)非常容易解決的問題。
如果你使用 od
(八進(jìn)制轉(zhuǎn)儲(chǔ))命令查看文件,那么回車(也用 Ctrl+M
代表)字符將顯示為八進(jìn)制的 15。字符 CRLF
通常用于表示 Windows 文本文件中的一行結(jié)束的回車符和換行符序列。那些注意看八進(jìn)制轉(zhuǎn)儲(chǔ)的會(huì)看到 \r\n
。相比之下,Linux 文本僅以換行符結(jié)束。
這有一個(gè) od
輸出的示例,高亮顯示了行中的 CRLF
字符,以及它的八進(jìn)制。
$ 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 <==
雖然這些字符不是大問題,但是當(dāng)你想要以某種方式解析文本,并且不希望就它們是否存在進(jìn)行編碼時(shí),這有時(shí)候會(huì)產(chǎn)生干擾。
幸運(yùn)的是,有幾種方法可以輕松刪除回車符。這有三個(gè)選擇:
你可能會(huì)在安裝時(shí)遇到麻煩,但 dos2unix
可能是將 Windows 文本轉(zhuǎn)換為 Unix/Linux 文本的最簡(jiǎn)單方法。一個(gè)命令帶上一個(gè)參數(shù)就行了。不需要第二個(gè)文件名。該文件會(huì)被直接更改。
$ dos2unix testfile.txtdos2unix: converting file testfile.txt to Unix format...
你應(yīng)該會(huì)發(fā)現(xiàn)文件長(zhǎng)度減少,具體取決于它包含的行數(shù)。包含 100 行的文件可能會(huì)縮小 99 個(gè)字符,因?yàn)橹挥?em>末尾一行不會(huì)以 CRLF
字符結(jié)尾。
之前:
-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
如果你需要轉(zhuǎn)換大量文件,不用每次修復(fù)一個(gè)。相反,將它們?nèi)糠旁谝粋€(gè)目錄中并運(yùn)行如下命令:
$ find . -type f -exec dos2unix {} \;
在此命令中,我們使用 find
查找常規(guī)文件,然后運(yùn)行 dos2unix
命令一次轉(zhuǎn)換一個(gè)。命令中的 {}
將被替換為文件名。運(yùn)行時(shí),你應(yīng)該處于包含文件的目錄中。此命令可能會(huì)損壞其他類型的文件,例如除了文本文件外在上下文中包含八進(jìn)制 15 的文件(如,鏡像文件中的字節(jié))。
你還可以使用流編輯器 sed
來刪除回車符。但是,你必須提供第二個(gè)文件名。以下是例子:
$ sed -e “s/^M//” before.txt > after.txt
一件需要注意的重要的事情是,請(qǐng)不要輸入你看到的字符。你必須按下 Ctrl+V
后跟 Ctrl+M
來輸入 ^M
。s
是替換命令。斜杠將我們要查找的文本(Ctrl + M
)和要替換的文本(這里為空)分開。
你甚至可以使用 vi
刪除回車符(Ctrl+M
),但這里假設(shè)你沒有打開數(shù)百個(gè)文件,或許也在做一些其他的修改。你可以鍵入 :
進(jìn)入命令行,然后輸入下面的字符串。與 sed
一樣,命令中 ^M
需要通過 Ctrl+V
輸入 ^
,然后 Ctrl+M
插入 M
。%s
是替換操作,斜杠再次將我們要?jiǎng)h除的字符和我們想要替換它的文本(空)分開。 g
(全局)意味在所有行上執(zhí)行。
:%s/^M//g
“Linux中怎么刪除文本中的回車字符”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!