linuxwindows換行
1. windows和linux,Mac系統換行規則的區別
計算機還沒有出現之前,有一種叫做電傳打字機(Teletype Model 33)的玩意,每秒鍾可以打10個字元。但是它有一個問題,就是打完一行換行的時候,要用去0.2秒,正好可以打兩個字元。要是在這0.2秒裡面,又有新的字元傳過來,那麼這個字元將丟失。
於是,研製人員想了個辦法解決這個問題,就是在每行後面加兩個表示結束的字元。一個叫做"回車",告訴打字機把列印頭定位在左邊界;另一個叫做"換行",告訴打字機把紙向下移一行。
這就是"換行"和"回車"的來歷,從它們的英語名字上也可以看出一二。
後來,計算機發明了,這兩個概念也就被般到了計算機上。那時,存儲器很貴,一些科學家認為在每行結尾加兩個字元太浪費了,加一個就可以。於是,就出現了分歧。
Unix系統里,每行結尾只有"<換行>",即"\n";Windows系統裡面,每行結尾是"<回車><換行>",即"\r\n";Mac系統里,每行結尾是"<回車>"。
2. Linux 終端 如何換行 \n
echo -e 'zero\nzo\nzoo'
-e 若字元串中出現以下字元,則特別加以處理,而不會將它當成一般
文字輸出:
\a 發出警告聲;
\b 刪除前一個字元;
\c 最後不加上換行符號;
\f 換行但游標仍舊停留在原來的位置;
\n 換行且游標移至行首;
\r 游標移至行首,但不換行;
\t 插入tab;
\v 與\f相同;
\\ 插入\字元;
\nnn 插入nnn(八進制)所代表的ASCII字元;
3. linux和dos下換行的不同表示
關於回車和換行的歷史。
回車和換行關於「回車」(carriage return)和「換行」(line feed)這兩個概念的來歷和區別。
在計算機還沒有出現之前,有一種叫做電傳打字機(Teletype Model 33)的玩意,每秒鍾可以打10個字元。但是它有一個問題,就是打完一行換行的時候,要用去0.2秒,正好可以打兩個字元。要是在這0.2秒裡面,又有新的字元傳過來,那麼這個字元將丟失。
於是,研製人員想了個辦法解決這個問題,就是在每行後面加兩個表示結束的字元。一個叫做「回車」,告訴打字機把列印頭定位在左邊界;另一個叫做「換行」,告訴打字機把紙向下移一行。
這就是「換行」和「回車」的來歷,從它們的英語名字上也可以看出一二。
後來,計算機發明了,這兩個概念也就被般到了計算機上。那時,存儲器很貴,一些科學家認為在每行結尾加兩個字元太浪費了,加一個就可以。於是,就出現了分歧。
Unix系統里,每行結尾只有「<換行>」,即「
」;Windows系統裡面,每行結尾是「<回車><換行>」,即「
」;Mac系統里,每行結尾是「<回車>」,即「
」。一個直接後果是,Unix/Mac系統下的文件在Windows里打開的話,所有文字會變成一行;而Windows里的文件在Unix下打開的話,在每行的結尾會多車一個^M字元。
Dos和windows採用回車+換行CR/LF表示下一行,即^M$
而UNIX/Linux採用換行符LF表示下一行,即$
蘋果機(MAC OS系統)則採用回車符CR表示下一行,即^M
CR用符號' '表示, 十進制ASCII代碼是13, 十六進制代碼為0x0D;
LF使用' '符號表示, ASCII代碼是10, 十六制為0x0A. 所以Windows平台上換行在文本文件中是使用 0d 0a 兩個位元組表示, 而UNIX和蘋果平台上換行則是使用0a或0d一個位元組表示.
一般操作系統上的運行庫會自動決定文本文件的換行格式. 如一個程序在windows上運行就生成CR/LF換行格式的文本文件,而在Linux上運行就生成LF格式換行的文本文件. 在一個平台上使用另一種換行符的文件文件可能會帶來意想不到的問題, 特別是在編輯程序代碼時. 有時候代碼在編輯器中顯示正常, 但在編輯時卻會因為換行符問題而出錯. 很多文本/代碼編輯器帶有換行符轉換功能, 使用這個功能可以將文本文件中的換行符在不同格式單互換.
在不同平台間使用ftp軟體傳送文件時, 在ascii文本模式傳輸模式下, 一些FTP客戶端程序會自動對換行格式進行轉換. 經過這種傳輸的文件位元組數可能會發生變化. 如果你不想ftp修改原文件, 可以使用bin模式(二進制模式)傳輸文本.
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////
一、windows的文件到linux下的轉換方法:
1. 用sed命令替換
sed -e 's/^M//g' original.txt > target.txt (注意^M 在Linux/Unix下是這樣輸入的:先按CTRL+v,接著按CTRL+SHIFT+m)
2. 在vi中替換
:%s/^M//g
3.在命令行下
tr -d " "<dosfile > unixfile
4.使用dos2unix命令
# dos2unix -k hosts
5.用sed命令
也可使用unix2dos命令。
三、其他
Mac -> UNIX:tr "
" "
"<macfile > unixfile
UNIX -> Mac:tr "
" "
"<unixfile > macfile
Microsoft DOS/Windows 約定,文本的每行以回車字元(
)並後跟換行符(
)結束。為了糾正這個問題,可以使用下列命令:
DOS -> UNIX:tr -d "
"<dosfile > unixfile
UNIX -> DOS:在這種情況下,需要用awk,因為tr不能插入兩個字元來替換一個字元。要使用的 awk 命令為 awk '{ print $0"
" }'<unixfile > dosfile
4. linux文件在windows打開沒有換行
方法1:用編輯器打開,例如寫字板,或者高級編輯器如,notepad++
方法2:在Linux下執行unix2dos oldboy.txt,類似這個命令,然後在轉移到win下試試。
5. Windows和Linux換行符的區別
'\r'是回車,前者使游標到行首,(carriage return)
'\n'是換行,後者使游標下移一格,(line feed)
\r 是回車,return
\n 是換行,newline
對於換行這個動作,unix下一般只有一個0x0A表示換行("\n"),windows下一般都是0x0D和0x0A兩個字元("\r\n"),蘋果機(MAC OS系統)則採用回車符CR表示下一行(\r)
Unix系統里,每行結尾只有「<換行>」,即「\n」;
Windows系統裡面,每行結尾是「<回車><換行>」,即「\r\n」;
Mac系統里,每行結尾是「<回車>」,即「\r」。
一個直接後果是,Unix/Mac系統下的文件在Windows里打開的話,所有文字會變成一行;而Windows里的文件在Unix下打開的話,在每行的結尾會多車一個^M字元。
Dos和windows採用回車+換行CR/LF表示下一行,即^M$($不是換行符的表示,換行符沒有表示出來,$是文本結束EOF的表示)
而UNIX/Linux採用換行符LF表示下一行,即\n
蘋果機(MAC OS系統)則採用回車符CR表示下一行,即\r
CR用符號'\r'表示, 十進制ASCII代碼是13, 十六進制代碼為0x0D;
LF使用'\n'符號表示, ASCII代碼是10, 十六制為0x0A. 所以Windows平台上換行在文本文件中是使用 0d 0a 兩個位元組表示, 而UNIX和蘋果平台上換行則是使用0a或0d一個位元組表示.
由於dos風格的換行使用\r\n,把這樣的文件上傳到unix,有些版本的vi不能識別\r,所以vi顯示時在行尾會出現^M出來,但是有些就能識別\r\n,正常顯示回車換行。
6. windows支持linux換行符嗎
回車符號和換行符號產生背景
關於「回車」(carriage return)和「換行」(line feed)這兩個概念的來歷和區別。
在計算機還沒有出現之前,有一種叫做電傳打字機(Teletype Model 33)的玩意,每秒鍾可以打10個字元。但是它有一個問題,就是打完一行換行的時候,要用去0.2秒,正好可以打兩個字元。要是在這0.2秒裡面,又有新的字元傳過來,那麼這個字元將丟失。
於是,研製人員想了個辦法解決這個問題,就是在每行後面加兩個表示結束的字元。一個叫做「回車」,告訴打字機把列印頭定位在左邊界;另一個叫做「換行」,告訴打字機把紙向下移一行。
這就是「換行」和「回車」的來歷,從它們的英語名字上也可以看出一二。
後來,計算機發明了,這兩個概念也就被般到了計算機上。那時,存儲器很貴,一些科學家認為在每行結尾加兩個字元太浪費了,加一個就可以。於是,就出現了分歧。
Unix
系統里,每行結尾只有「」,即「\n」;Windows系統裡面,每行結尾是「 」,即「
\r\n」;Mac系統里,每行結尾是「」。一個直接後果是,Unix/Mac系統下的文件在Windows里打開的話,所有文字會
變成一行;而Windows里的文件在Unix/Mac下打開的話,在每行的結尾可能會多出一個^M符號
windows創建的文件是 \n\r結束的, 而linux,mac這種unix類系統是\n結束的。
所以unix的文本到windows會出現換行丟失(ultraedit這種軟體可以正確識別); 而反過來就會出現^M的符號了
Windows
等操作系統用的文本換行符和UNIX/Linux操作系統用的不同,Windows系統下輸入的換行符在UNIX/Linux下不會顯示為「換行」,而是
顯示為 ^M 這個符號(這是Linux等系統下規定的特殊標記,佔一個字元大小,不是 ^ 和 M
的組合,列印不出來的)。Linux下很多文本編輯器(命令行)會在顯示這個標記之後,補上一個自己的換行符,以避免內容混亂(只是用於顯示,補充的換行
符不會寫入文件,有專門的命令將Windows換行符替換為Linux換行符)。
UNIX/Linux系統下的換行符在Windows系統的文本編輯器中會被忽略,整個文本會亂成一團。
windows換行是\r\n,十六進制數值是:0D0A。
LINUX換行是\n,十六進制數值是:0A
所以在linux保存的文件在windows上用記事本看的話會出現黑點,我們可以在LINUX下用命令把linux的文件格式轉換成win格式的。
unix2dos 是把linux文件格式轉換成windows文件格式
dos2unix 是把windows格式轉換成linux文件格式。
linux下刪除windows換行符^M
OJ判題時發現一個問題:用%c讀入的代碼都會報wa。後來發現跟scanf有關。在linux下使用%c會讀到\n和\r兩個字元。所以需要將^M(也就是\r)字元刪掉
刪除方法不少。找了一個比較簡單的。
要將a.txt里的^M去掉並寫入b.txt,則使用如下指令cat a.txt | tr -d "^M" > b.txt
注意:語句中的^M是通過ctrl+V, ctrl+M輸入的。特指/r字元
unix 下換行符只有: \r
Dos 下換行符有:\r\n
具體的, \r的ascii 碼是:14
\n的ascii 碼是:10
7. windows和linux換行區別
WINDOWS與LINUX換行的區別,一般在不同的操作系統中,其他操作方法和方式會有些不同的。一般在換行方面,大概的方法都是一樣的,可以按ENTER來進行操作的
8. 為什麼Windows和Linux不能將換行符統一
高級點的文本編輯器都支持兩種換行,系統自帶的記事本不支持而已。好像新版的win10記事本能支持\n換行