我如何使用ant进行unix2dos(或dos2unix).即我想将换行符从linux换行符(如果有的话)更改为dos换行符
我需要使用Cygwin中的unix paste实用程序将几百GB的数据粘贴在一起,但如果文件中有Windows EOL字符,它将无法正常工作.数据可能有也可能没有Windows EOL字符,如果不需要,我不想花时间运行dos2unix.
所以我的问题是,在Cygwin中,我怎么能弄清楚这些文件是否有Windows EOL CRLF字符?
我已经尝试创建一些测试数据并运行
sed -r 's/\r\n//' testdata.txt
Run Code Online (Sandbox Code Playgroud)
但无论dos2unix是否已运行,这似乎都匹配.
谢谢.
这个问题的目的是提供一个答案,每天的问题,其答案是"你中有DOS行结束",所以我们可以简单地关闭他们,因为这一个的副本,而无需重复同样的答案,令人生厌.
注意:这不是任何现有问题的副本.本问答的目的不仅仅是提供"运行此工具"的答案,而且还要解释这个问题,以便我们可以在这里指出任何有相关问题的人,他们会找到一个明确的解释,为什么他们在这里也被指出作为运行的工具,解决他们的问题.我花了几个小时阅读所有现有的问答,他们都缺乏对问题的解释,可用于解决问题的替代工具,和/或可能的解决方案的优缺点/警告.他们中的一些人已经接受了一些非常危险且永远不应该使用的答案.
现在回到将导致推荐的典型问题:
我有一个包含1行的文件:
what isgoingon
Run Code Online (Sandbox Code Playgroud)
当我使用这个awk脚本打印它来反转字段的顺序时:
awk '{print $2, $1}' file
Run Code Online (Sandbox Code Playgroud)
而不是看到我期望的输出:
isgoingon what
Run Code Online (Sandbox Code Playgroud)
我得到的行应该在行的末尾出现在行的开头,覆盖行开头的一些文本:
whatngon
Run Code Online (Sandbox Code Playgroud)
或者我将输出拆分为2行:
isgoingon
what
Run Code Online (Sandbox Code Playgroud)
问题是什么,我该如何解决?
我想知道这里是否有人有写这种脚本的经验,如果他们能给我一些指示.
我想修改此脚本以验证签入文件在EOL格式中没有回车符.EOL格式是Windows中的CR LF和Unix中的LF.当用户使用Windows格式签入代码时.它不再在Unix中编译.我知道这可以在客户端完成,但我需要在服务器端完成此验证.为此,我需要做以下事情:
1)确保我检查的文件不是二进制文件,我不知道如何用svnlook执行此操作,我应该检查mime:文件的类型吗?该红皮书没有清楚说明这还是我绝没见过它.
2)我想运行dos2unix命令来验证文件是否具有正确的EOL格式.我会将dos2unix命令的输出与原始文件进行比较.如果两者之间存在差异,我会向客户端发送错误消息并取消签入.
我希望您就此方法提出意见/反馈.
在文件上运行dos2unix时,我将以下内容打印到终端
dos2unix: converting file <filename> to UNIX format ...
Run Code Online (Sandbox Code Playgroud)
在我尝试通过将输出发送到/ dev/null来抑制输出时,我注意到这是在stderr而不是stdout发出的,因为我预期(因为它看起来像是正常的消息,而不是错误).是否有一个原因?
我在一个目录中有一堆xml文件需要对它们执行dos2unix命令,并且每隔一段时间就会添加新文件.我不是每次都在每个文件上手动执行dos2unix命令,而是希望使用脚本自动完成所有这些操作.在我的生活中,我甚至都没有看过shell脚本,但到目前为止,我从一些教程中读到了这些内容:
FILES=/tmp/testFiles/*
for f in $FILES
do
fname=`basename $f`
dos2unix *.xml $f $fname
done
Run Code Online (Sandbox Code Playgroud)
但是我一直在显示'使用'输出.我认为问题是我没有正确分配新文件的名称(fname).谁能帮忙.
谢谢,艾伦
问题说明了一切,我有一个500,000行文件,它是在Windows机器上自动构建过程的一部分生成的,并且它充满了^ M的.当它出门时它需要*nix友好,这里最好的方法是什么,是否有一个方便的代码片段可以为我做这个?或者我是否需要编写一些C#或Java应用程序?
我目前遇到的问题是我的脚本在尝试对文件执行 dos2unix 命令时失败。
这是我在脚本中的内容:
dos2unix -n data/file data/tmp_file
dos2unix: Binary symbol found at line 21107611
dos2unix: Skipping binary file data/input/DATA.txt
mv -f data/tmp_file data/input/DATA.txt
mv: cannot stat ‘data/tmp_file’: No such file or directory
Run Code Online (Sandbox Code Playgroud)
我去了问题所在,我在这里有一个“^@”。这是什么,我如何使用 dos2unix 命令让我的脚本工作?
{128392938928392838123129381298398129^@
Run Code Online (Sandbox Code Playgroud)
谢谢
我有一个vb.net(visual studio 2010)项目,使用git(1.7.10.msysgit.1)进行版本控制.我犯了一个错误,core.autocrlf在git 中留下真实.现在我设置core.autocrlf为false,但源代码已经转换为存储库内的LF行结尾.我想将行结尾更改回CRLF.
我纠正这种情况的计划是:
我遇到了第4步的问题.项目中有很多文件,希望有一个工具可以将所有文本文件批量转换为CRLF行结尾.
我试过dos2unix在git bash中可用,但看起来它不会处理子文件夹,它告诉我文本文件looks binary.
那么,将源代码批量转换回CRLF行结尾的最佳方法是什么?