Windows 和 Linux 之間文本格式轉換


在 Windows 上編輯的文件,放到 Linux 平台,有時會出現奇怪的問題,其中有一個是 ^M 引起的,例如這種錯誤:
/bin/bash^M: bad interpreter

這個問題相信大家也碰到過,原因是 Windows 和 Linux 關於換行的表達方式不同:

  • Linux 的換行,在每一行的末尾只有一個換行符(LF) \n, 行尾以 \n 來標識
  • Windows 的換行,在每一行的末尾是 一個回車(CR) \r 和一個換行符(LF) \n 和,行尾以 \r\n 來標識

例如下圖,行尾有 ^M

這個 ^M 就是 Windows 平台下的回車 \r, 在 Linux 下被 vim 解釋成了 ^M.

這里提供幾種思路和方法來解決:

1. 使用 sed 替換

sed -e ‘s/.$//’ win.txt > unix.txt

.$ 來匹配行尾的字符(.不會匹配到\n),windows dos 格式的行尾就是 ^M\n;將 ^M 替換為空

  • 使用 # cat -A win.txt 來檢查一下還有沒有 ^M

2. 使用 dos2unix

  • 沒有就先安裝一下 yum install -y dos2unx ,大部分 Linux 發行版都有這個包
    # dos2unix win.txt

  • 使用 # cat -A win.txt 來檢查一下還有沒有 ^M

3. 利用 vim 處理

  • 用 vim 打開文件后,可以查看下當前的文件系統格式:
    :set ff?

  • 然后可以更改格式:
    set ff=unix

  • 使用 # cat -A win.txt 來檢查一下還有沒有 ^M

參考鏈接:
[1] windows與unix文件格式轉換
[2] linux下使用vim編輯文件,出現^M是什么意思?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM