我有一个名为COPYING的.txt
文件,是在Windows上编辑的。
它包含Windows风格的换行符:
$ file COPYING
COPYING: ASCII English text, with CRLF line terminators
我尝试使用 dos2unix
将其转换为 Unix 格式。以下是输出结果:
$ dos2unix COPYING
dos2unix: Skipping binary file COPYING
我很惊讶地发现dos2unix
程序将其报告为二进制文件。使用另一个编辑器(不是Emacs),我发现该文件包含控制字符。我想使用Emacs查找文件中的所有不可见字符。
通过搜索,我找到了以下解决方案,它使用了tr
:
tr -cd '\11\12\40-\176' < file_name
如何用Emacs的方式来实现相同的功能?我尝试了Hexl模式,它可以在单个缓冲区中显示文本及其对应的ASCII值,非常不错。那么如何查找ASCII值不在11-12、40-176范围内(即制表符、空格和可见字符之外的字符)的字符?我尝试创建一个正则表达式进行搜索,但这相当复杂。
whitespace-mode
中无法显示。其中包括:零宽度空格、零宽度非连接符、零宽度连接符、字节顺序标记等等...请看看fingerprinting如何使用它们,以及忽视它们的危险。您可能需要将此反映到您的答案中。 - kotchwane