我正在使用一些相当旧的文件.不同的程序创建了不同的文件,因此其中一些以\ r(mac)结尾,一些以\n(unix)结尾.我希望能够在这些文件上运行diff,grep等命令,但将\ r \n的命令视为一个巨行.有没有人知道一个版本的diff,grep等可以正常使用所有新行?
ETA:我也希望它们是unix实用程序,所以我可以在脚本,emacs等中使用它们......
如果使用diff -w
它将忽略文件中的空格,这可能足以满足您的需求.
编辑:刚刚意识到我第一次误读了帖子,你实际上正在寻找一个可以与\r
行结尾一起使用的差异.我的建议是将文件转换成可以将文件转换为标准格式的翻转文件\n
.
编辑2:刚刚找到了你想要的东西 - Diff'nPatch:
Diff'nPatch是GNU'diff','patch'和'cmp'实用程序的Macintosh端口.它允许您比较和查找两个文件或文件夹之间的差异,整理两个文件,生成各种格式的差异(正常,上下文,unidiff等),应用补丁,逐字节比较文件.它可以处理任何类型的行结尾(mac,unix或windows)
正如杰伊所说,Diff'nPatch似乎正是你要找的.或者,您可以在单个命令中转换'\n'中所有'\ r'行结尾,如下所示:
sed -ie 's/\r/\n/' filename
要么
find . | xargs -n1 sed -ie 's/\r/\n/'
(在后一种情况下,您可能希望以某种方式过滤文件列表,或者它将应用于所有子目录中的所有文件.)
与OSX Lion捆绑在一起的diff实用程序有一个选项'strip-trailing-cr'可以实现您想要的功能.你这样使用它:
diff -cpt a.c b.c --strip-trailing-cr