Window 和 Linux 下的斷行符號換行不文字檔格式

來源:互聯網
上載者:User

 簡單的說,window檔案換行是 “/r/n”, 而Linux檔案的換行是 “/n”, 所以將檔案從window 下直接複製到 Linux 和就有問題。 用vim 開啟揮發現 ^M 的字元在每一行尾。

 但是好多軟體,會直接去處理這些區別。 比如notepad++, 會開啟檔案如果發現是“/r” 或者是“/r/n” 都會顯示新行。 perforce 也對此有處理,比如先將檔案從window下提交到perforce,然後再從perforce同步到Linux/Unix平台下, perforce 會自動轉換“/r/n” 到“/n“;反之,檔案從Linux提交到perforce, 在同步到Windows, 這是perforce把“/n” 轉換為“/r/n”。

因為這些軟體處理不同平台下的斷行符號換行不同,所以我們很少注意到。 但是有時候問題就出現在這看不見的斷行符號分行符號裡面。那麼怎麼檢查?

用二進位去查看這些檔案,可以方便查看不用。 比如: vim 下 %!xdd 開啟查看。

 下面一個查看二進位的例子來源於http://www.cnblogs.com/killkill/archive/2010/06/23/1763785.html

首先建立一個二進位檔案:

 
1 [oracle@logserver tmp]$ echo -n "ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz" > test.bin 
2 [oracle@logserver tmp]$ cat test.bin 
3 ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz[oracle@logserver tmp]$

注意echo 一定要跟上 -n 選項,否則會被自動加上一個換行行,再用vim開啟 test.bin

view source

print?

1 [oracle@logserver tmp]$ vim -b test.bin

vim 的 -b 選項是告訴 vim 開啟的是一個二進位檔案,不指定的話,會在後面加上 0x0a ,即一個分行符號。

在命令模式下鍵入:

view source

print?

1 :%!xxd

如果 vim 後面沒有加 -b 選項就會出現可惡的 0x0a:

如果有 -b 選項就不會有這種情況:

然後進入編輯模式改,改就是了,我將A、B對應的41、42改成61、62,將a、b對應的61、62改成41、42。

回到命令模式輸入:

view source

print?

1 :%!xxd -r

此時可以發現AB和ab的位置互換了。

最後在命令模式中輸入 :wq 儲存退出即可。

瞭解這些區別,用適當的工具去查看,這樣可以快速排除或者定位問題。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.