Skip to content

Windows 与 Linux 文本格式转换

一、背景

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

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

这种差异可能导致:

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

二、格式转换方法

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

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

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

参数说明

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

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

安装方法(不同平台):

系统平台安装命令
Ubuntu/Debiansudo apt install dos2unix
CentOS/RHELsudo yum install dos2unix
Arch/Manjarosudo pacman -S dos2unix
macOS(需 Homebrew)brew install dos2unix

使用示例:

bash
# Windows → Linux 格式
dos2unix filename.txt

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

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

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

  1. 使用 Vim 打开文件:

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

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

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

    vim
    :wq

🍊 总结建议

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

采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 运维小弟