You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PowerShell的Bash环境中使用sed将CRLF转换为LF?

在Bash环境中使用sed完成CRLF到LF的转换

问题根源

msys2的Bash环境会自动将文件中的CRLF换行符转换为LF,导致你原本依赖换行符匹配的sed命令无法识别到CR字符,因此转换失效。而PowerShell不会做这种自动转换,所以命令能正常运行。

解决方法

1. 直接匹配CR字符替换

使用sed明确匹配行尾的\r(回车符)并删除,这是最直接有效的方法:

sed -i 's/\r$//' file.txt
  • \r对应CRLF中的CR部分
  • $限定只匹配行尾的CR,避免误删文件内容中可能存在的回车符

2. 关闭Bash的自动CRLF转换

通过设置环境变量让Bash不对目标文件做换行符转换,再执行原sed命令:

export NO_CRLF_CONVERSION=1
sed -E -i "s/
/
/" file.txt

这种方法需要先设置环境变量,不如第一种方法简便。

3. 使用专用转换工具(推荐)

msys2自带dos2unix工具,专门用于CRLF和LF的互转,命令更简洁:

dos2unix file.txt

如果未安装,执行以下命令安装:

pacman -S dos2unix

内容的提问来源于stack exchange,提问作者Sourav Kannantha B

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 20:25:27