如何找到一个Windows行尾(EOL)字符

Ste*_*ner 11 unix linux dos2unix sed eol

我需要使用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是否已运行,这似乎都匹配.

谢谢.

sar*_*old 18

file(1)实用程序知道不同之处:

$ file * | grep ASCII
2:                                       ASCII text
3:                                       ASCII English text
a:                                       ASCII C program text
blah:                                    ASCII Java program text
foo.js:                                  ASCII C++ program text
openssh_5.5p1-4ubuntu5.dsc:              ASCII text, with very long lines
windows:                                 ASCII text, with CRLF line terminators
Run Code Online (Sandbox Code Playgroud)

file(1) 已经过优化,尝试尽可能少地读取文件,因此您可能会很幸运并大大减少查找和修复CRLF终结器时需要执行的磁盘IO数量.

请注意,CRLF的某些情况应保持不变:SMTP的捕获将使用CRLF.但这取决于你.:)