首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Unix行尾转换Windows行尾(CR/LF到LF)

如何在Unix行尾转换Windows行尾(CR/LF到LF)
EN

Stack Overflow用户
提问于 2010-10-08 21:37:54
回答 8查看 138.3K关注 0票数 87

我是一名Java开发人员,我正在使用Ubuntu进行开发。该项目是使用Eclipse在Windows中创建的,并且使用了Windows-1252编码。

为了转换为UTF-8,我使用了程序:

代码语言:javascript
复制
find Web -iname \*.java | xargs recode CP1252...UTF-8

此命令会显示以下错误:

代码语言:javascript
复制
recode: Web/src/br/cits/projeto/geral/presentation/GravacaoMessageHelper.java failed: Ambiguous output in step `CR-LF..data

我搜索了一下,并在中得到了解决方案,它说:

将行结束符从CR/LF转换为单个LF:使用Vim编辑文件,给出命令:set ff=unix并保存文件。Recode现在应该可以无错误地运行。

不错,但是我有很多文件要删除CR/LF字符,但我无法打开每个文件来删除。Vi没有为Bash操作的命令行提供任何选项。

使用sed可以做到这一点吗?多么?

EN

回答 8

Stack Overflow用户

发布于 2010-10-08 21:40:22

应该有一个名为dos2unix的程序可以为您修复行尾。如果你的Linux机器上还没有它,应该可以通过包管理器获得它。

票数 128
EN

Stack Overflow用户

发布于 2013-10-10 05:51:32

sed无法与\n匹配,因为在将该行放入模式空间之前删除了尾随的换行符,但它可以与\r匹配,因此您可以通过删除以下内容将\r\n (DOS)转换为\n (Unix):\r

代码语言:javascript
复制
sed -i 's/\r//g' file

警告:这将更改原始文件

但是,您不能通过这种方式将Unix EOL更改为DOS或旧的Mac (\r)。更多信息请点击此处:

票数 93
EN

Stack Overflow用户

发布于 2014-08-19 21:59:11

实际上,Vim确实允许您查找的内容。输入Vim,然后键入以下命令:

代码语言:javascript
复制
:args **/*.java
:argdo set ff=unix | update | next

这些命令中的第一个以递归方式将参数列表设置为与**/*.java匹配的每个文件。这些命令中的第二个依次对参数列表中的每个文件执行以下操作:

  • 将行尾设置为Unix样式(这一点你已经知道了),
  • 将该文件写出,它已被写入下一个文件
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3891076

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档