Windows 与 Linux 文本格式转换

一、背景

在跨平台协作时,Windows 和 Linux 系统的换行符差异常导致文本文件显示异常,主要表现为:

  • Windows 系统:使用 \r\n(CR+LF)表示换行(回车+换行符)
  • Linux 系统:使用 \n(LF)表示换行(仅换行符)

这种差异可能导致:

  1. 在 Linux 中打开 Windows 文件时显示 ^M 符号
  2. 脚本文件无法直接执行(如 bash: bad interpreter 错误)
  3. 代码文件在版本控制中显示大量差异

二、格式转换方法

🍇方法 1:使用 sed 命令替换

通过正则表达式直接替换换行符(适合批量操作):

# Windows → Linux(删除 CR 字符)
sed -i 's/\r$//' filename.txt

参数说明

  • -i:直接修改源文件(建议操作前备份)
  • 替换操作符 s/原内容/新内容/

🍈方法 2:使用 dos2unix/unix2dos 工具

安装方法(不同平台):

系统平台 安装命令
Ubuntu/Debian sudo apt install dos2unix
CentOS/RHEL sudo yum install dos2unix
Arch/Manjaro sudo pacman -S dos2unix
macOS(需 Homebrew) brew install dos2unix

使用示例:

# Windows → Linux 格式
dos2unix filename.txt

# 批量转换目录下所有文件
dos2unix *.txt

🍉方法 3:使用 Vim 编辑器处理

通过设置文件格式实现转换:

  1. 使用 Vim 打开文件:

    vim filename.txt
    
  2. 查看当前格式(命令行模式):

    :set ff?
    
    • 显示 fileformat=dos 表示 Windows 格式
    • 显示 fileformat=unix 表示 Linux 格式
  3. 修改格式(任选一种):

    :set ff=unix  # 转为 Linux 格式
    
  4. 保存并退出:

    :wq
    

🍊 总结建议

场景 推荐工具
单个文件快速转换 dos2unix/unix2dos
批量文件处理 sed 命令
临时编辑时修改格式 Vim 文件格式设置