86

以下是什么意思?

diff -rBNu src.orig/java/org/apache/nutch/analysis/NutchAnalysisConstants.java src/java/org/apache/nutch/analysis/NutchAnalysisConstants.java
--- src.orig/java/org/apache/nutch/analysis/NutchAnalysisConstants.java 2009-03-10 11:34:01.000000000 -0700
+++ src/java/org/apache/nutch/analysis/NutchAnalysisConstants.java  2009-03-10 14:11:55.000000000 -0700
@@ -4,9 +4,12 @@

+  int CJK = 21;
+  int DIGIT = 22;

   int DEFAULT = 0;

   String[] tokenImage = {
     "<EOF>",
+    "\"OR\"",
     "<WORD>",
     "<ACRONYM>",
     "<SIGRAM>",
@@ -39,6 +42,8 @@
     "\"\\\"\"",
     "\":\"",
     "\"/\"",
+    "\"(\"",
+    "\")\"",
     "\".\"",
     "\"@\"",
     "\"\\\'\"",
4

4 回答 4

126

您使用的-u选项指定统一格式。在该格式中,前两行是标题:---是原始文件,+++是新文件,以及时间戳。

@@块头

然后是以@@ -R,r +R,r @@语法开头的块(更改块)。

这是两个范围,一个-是原始文件中块的+范围,一个是新文件中的范围。R指定开始差异操作的行号。

逗号后面的数字是每个文件中受影响的行数

  • 每次删除一行时,数字+r都会小于-r
  • 每次添加一行,数字+r都会大于-r
  • 更改一行将添加0到该+r数字。(线范围相同)

代码行块

在这些块中,行被标识为添加或删除-意味着删除,+意味着添加。该块中未更改的行将既没有也没有+前面-

在您的示例中,这意味着有两个块或部分在两个文件之间发生了更改,其中包含的行+是添加的新行,没有删除任何内容。

您可以通过谷歌搜索统一差异来找到有关语法的更多信息。

于 2009-06-12T15:53:46.183 回答
24

旧文件名

--- src.orig/java/org/apache/nutch/analysis/NutchAnalysisConstants.java 2009-03-10 11:34:01.000000000 -0700

新文件名

+++ src/java/org/apache/nutch/analysis/NutchAnalysisConstants.java  2009-03-10 14:11:55.000000000 -0700
  • -4: 块从旧文件的第 4 行开始(包括上下文行);
  • 9:旧文件中块中的行数,包括上下文行(因此-前面有或没有的行总数);
  • +4: 块从新文件的第 4 行开始;
  • 12:新文件中块中的行数,包括上下文行(因此+前面有或没有的行总数)。

注意:我将差异更改为包含修改的行,因此删除的行后跟添加的行。

@@ -4,9 +4,12 @@

+  int CJK = 21;
+  int DIGIT = 22;

-  int DEFAULT = 0;
+  int DEFAULT = 42;

   String[] tokenImage = {
     "<EOF>",
+    "\"OR\"",
     "<WORD>",
     "<ACRONYM>",
     "<SIGRAM>",

与上面相同,但请注意新文件中的块进一步开始 3 行,因为前一个块增加了 3 行的净值。

@@ -39,6 +42,8 @@
     "\"\\\"\"",
     "\":\"",
     "\"/\"",
+    "\"(\"",
+    "\")\"",
     "\".\"",
     "\"@\"",
     "\"\\\'\"",
于 2016-12-15T19:37:09.997 回答
1

这些+字符表示这些行是自NutchAnalysisConstants.java. 该@@行告诉您差异已跳转到文件的另一部分,在本例中为原始文件中的第 39 行,或新文件中的第 43 行。

于 2009-06-12T15:50:09.360 回答
0

这取决于你要问什么。Diff 显示两个文件之间的差异。在您的情况下,您NutchAnalysisConstants.java从两个不同的地方进行区分并生成有关这些差异的信息。

-rto diff 的意思是“递归差异”,尽管在这种情况下它什么都不做,因为你是在区分文件,而不是目录。

-B意味着忽略只涉及空行的更改。

-N意味着如果在目录 1 中有一个文件,但它在目录 2 中不存在,则 diff 应该将其视为文件存在但在目录 2 中为空(从而有效地为您提供目录 1 中文件的全部内容)。

-u表示使用统一的输出格式,只有 GNU diff 和 GNU patch 支持。

至于输出的含义,这个链接可能对你有用。

于 2009-06-12T15:48:55.353 回答