确定文本文件中的换行符?


8

给定文本,是否有一个程序可以检测换行符是Windows,Mac还是Linux?

例如,以下文字显示为 less

内存:^ M ^ CPU可以直接访问的Mis存储^ M ^ M术语“内存”通常(但不总是)与可寻址的半导体存储器关联,即由基于硅的晶体管组成的集成电路。^ M半导体存储器被组织为^记忆细胞

我以为^ M是Mac下的换行符。但是在emacs中,我按Ctrl-q Ctrl-m进行了搜索,但没有发现任何内容。

谢谢。


1
file命令灵魂提供线索,dos2unix可能也有帮助。
Archemar

Answers:


9

file将报告文本文件的行尾。例如,如果您file在ASCII Unix / Linux / OSX文本文件上运行,它将仅报告:

$ file test.txt
test.txt: ASCII text

但是,如果文件具有DOS / Windows换行符,它将报告:

test.dos: ASCII text, with CRLF line terminators

在OS 9之前的版本,Mac使用CR作为行尾。出现此类文件时,file将报告:

test.mac: ASCII text, with CR line terminators

使用OSX,Mac可以转换为标准Unix行尾。


如果文本文件是Linux,Mac和Windows的混合文本。将file仍然有权检举换行字符?
蒂姆(Tim)

@Tim我在一些混合文件上进行了测试,并正确报告了混合结尾。例如,对于所有这三种类型,它都报告为 ASCII text, with CRLF, CR, LF line terminators
2014年

我尝试了一下,它给了我ASCII text, with very long lines。终结者是LF
原来的话

@wordsforthewise LF终止符是unix和linux标准。如果文件具有LF终结符,则file不要提及使用了哪些终结符。请参阅上面答案中的第一个示例。仅当文件具有非unix终结符时才提及终结符。请参阅上面的答案中的第二个和第三个示例。另外,您的文件可能有一个或多个长行。
约翰1024'17

1
是的我明白。我只是觉得这很有趣,因为它说“很长的线”
话说好了,2017年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.