题
我工作的一个mac,有些较老的文件。不同的文件是由不同的程序,因此他们中的一些结束 (mac)和一些与 (unix)。我希望能够运行命令之类的差异,查询,等在这些文件,但那些已经 被视为一个巨大的路线。任何人都不会知道的一个版本的差异,查询等,将正常工作的所有新的线?
ETA:我也想他们是unix公用事业这样我就可以使用他们在脚本,emacs,等等。
解决方案
至于周董说,Diff'nPatch看来你在找什么。另外,您可以转换成“\ n”所有“\ r”行结束在这样一个命令:
sed -ie 's/\r/\n/' filename
或
find . | xargs -n1 sed -ie 's/\r/\n/'
(您可能需要在后者的情况下进行过滤以某种方式的文件的列表或将被应用到所有子目录的所有文件。)
其他提示
如果您使用diff -w
它会忽略文件的空白,这可能足以满足您的需求。
修改:刚刚意识到我误解后的第一时间,你实际上是在寻找一个差异,将与\r
行结束工作。我的建议是将文件转换的东西,如 翻转 可以将文件转换为一个\n
标准格式。
编辑2 :刚刚发现的东西,看起来像你想要的东西 - 的 <强> Diff'nPatch 强> :
Diff'nPatch是一个端口到Macintosh GNU的“差异”,“补丁”和“议定书”的 公用事业。它可以让你比较和 找到两个文件或之间的差异 文件夹,整理两个文件,生成 diff文件以各种格式(正常, 背景,unidiff,等等),应用 补丁,比较文件逐字节。 它可以处理任何类型的行结束的 (MAC,UNIX或Windows)
与OSX狮子捆绑的diff工具有一个选项“带尾CR”,做要。您可以使用它,像这样:
diff -cpt a.c b.c --strip-trailing-cr
命令unix2dos可以在第一文件转换成统一的格式帮助。我相信这是适用于几乎所有您能想到的,可以一次对大量的文件运行的每个平台。我相信有适用于Mac包。
PHPStorm的差异视图的"忽略的空白" 只是工作.它自动地忽略了一差异在车回返/终止/newline/什么-有-你。你可以浪费你的时间摆弄神秘的unix命令或什么的,或者你只能得到的东西,实际工作,并推动生活。
- 使用任何上述解决方案未能对山区的狮子(包括一个标明为正确的答案).所有的下载链接"差npatch"失败。(我没有找到 http://webperso.easyconnect.fr/bdesgraupes/tools.html 但是我真的不喜欢这个想法具有诉诸使用差异的工具,不能援引从命令行并因而综合的任何IDE或风险的工具,我可能被使用,如BBEdit,SourceTree,或SmartSVN--所有这一切,顺便说一句,未能忽略的内容的行与他们的内在差异的工具。
是的,我的新行是 ,但是还等什么?Arrr!如果软件是太愚蠢了实现这 == 然后我会使用不同的软件, 是 够聪明。
PHPStorm是唯一的软件,可以有差异的工具,这"仅仅是工作"--这是我希望Mac软件做到的。我想Mac软件 只是工作.我用一个Mac所以我可以做我的工作而不是学习神秘的终端的命令,这几乎所有不良记录,期待你只是了解如何指令都应该被格式化没有任何明确的例子,所以你永远不知道如果你这样做是错误的,或者如果该命令 只是没工作 就像所有其他不好的软件。采取这个例子来自"的男人比较":
-I RE --ignore-matching-lines=RE Ignore changes whose lines all match RE.
好了,具有读这个,我不知道这意味着什么。没有例的使用情况。什么是"重新"?这并不是说任何地方。
然后还有这个宝石:
--GTYPE-group-format=GFMT Similar, but format GTYPE input groups with GFMT. --line-format=LFMT Similar, but format all input lines with LFMT. --LTYPE-line-format=LFMT Similar, but format LTYPE input lines with LFMT. LTYPE is `old', `new', or `unchanged'. GTYPE is LTYPE or `changed'. GFMT may contain: %< lines from FILE1 %> lines from FILE2 %= lines common to FILE1 and FILE2 %[-][WIDTH][.[PREC]]{doxX}LETTER printf-style spec for LETTER LETTERs are as follows for new group, lower case for old group: F first line number L last line number N number of lines = L-F+1 E F-1 M L+1 LFMT may contain: %L contents of line %l contents of line, excluding any trailing newline %[-][WIDTH][.[PREC]]{doxX}n printf-style spec for input line number Either GFMT or LFMT may contain: %% % %c'C' the single character C %c'\OOO' the character with octal code OOO
我可以做没有意义的任何责任这一通道。什么是"输入"?它是这两个文件或者仅仅是"来"的文件或者仅仅是"来自"的文件?什么是"类似"指的是?什么是"是"的意思是说在第一句,"GFMT'是'LTYPE或`改变的'"?这是否意味着"可以替换为"?如果是这样,那么为什么不是"GFMT"引号或者括号内,等等?由于不如给出的,有没有办法知道;该文件的措辞是完全不明确的。什么是"GFMT可以包含"...意思?没有"含有"意味着案文替换的首字母缩写GFMT可能包含?没有一个明显的例子是完全无用的。
为什么还要费心去写一个人网页,如果你要让这神秘的和模糊不清这是没有用的任何人已经不知道如何使用软件,基本上?在这一点上,它不是一个手册;它只是一个快速的参考页的家伙是谁写的软件,使他们可以记得如何使用它。我猜他们假设你就读的源代码本身如果你想知道什么,它实际上做。
我的时间是宝贵的。我宁愿只是支付金钱有一个软件,实际上正常工作,并有适当的文件。
因为所有这些失败:
diff -d --strip-trailing-cr --ignore-all-space --from-file=rest.phtml test.phtml
...未能忽视 符。
diff -wd --strip-trailing-cr --ignore-all-space --from-file=rest.phtml test.phtml
...未能忽视 符。
diff -wd --suppress-common-lines --strip-trailing-cr --ignore-all-space --from-file=rest.phtml test.phtml
...未能忽视 符。
diff -wd test.phtml rest.phtml --suppress-common-lines --strip-trailing-cr --ignore-all-space
...未能忽视 符。
diff -awd test.phtml rest.phtml --suppress-common-lines --strip-trailing-cr --ignore-all-space
...未能忽视 符。
对于这个问题如果他们被 符它也没有时 字相加。
在哪测试。phtml==
foo
酒吧
和rest.html ==
foobar
的"差异"的命令总是给你的东西,如:
* 1,2 ** !foo!酒吧\没有newline at end的文件
--- 1 ---- !foobar\没有newline at end的文件
...失败!
我用以下快速解决方案,其具有的缺点(见下文):
1:做一比较,并仅列出的文件名
diff -r -q dir1/ dir2/
2:开放并保存每一所列文件的编辑器被使用的,这将改变线路-结局。
3:做一个正规的差异
缺点包括:
- 不太可靠、容易出错
- 更多的工作,如果你有很多的文件
这为我工作:
diff -r --ignore-all-space dir1/ dir2/
我在OSX上,并且已经从混合OSX和Windows文件。 信用: HTTP: //www.codealpha.net/514/diff-and-ignoring-spaces-and-end-of-lines-unix-dos-eol/