标签: diff

如何使用差异排除多条线模式?

我想对两个 xml 文件进行比较,但忽略 2-3 行模式。

例如:假设我想在比较下面的 xml 格式时忽略可用性和价格。

这是我到目前为止所拥有的:

diff -I '^<PRICE>*' 1.xml 2.xml

<CATALOG>

    <PLANT>  
    <COMMON>Bloodroot</COMMON>  
    <BOTANICAL>Sanguinaria canadensis</BOTANICAL>  
    <ZONE>4</ZONE>  
    <LIGHT>Mostly Shady</LIGHT>  
    <PRICE>$2.44</PRICE>  
    <AVAILABILITY>031599</AVAILABILITY>  
    </PLANT>  
</CATALOG>
Run Code Online (Sandbox Code Playgroud)

使用上面的差异,它跳过了价格,但我如何为这个正则表达式添加可用性?

regex unix diff

1
推荐指数
1
解决办法
3409
查看次数

“图像不同”的外壳测试?

在 shell 脚本中,我想检查两个 PNG 图像是否不同,因为图像具有不同的大小,或者一个图像的至少一个像素的 RGBA 与另一幅图像的相应像素不同。

散列两个图像文件将不起作用,因为图像可能以不同的方式压缩或具有不同的注释,或者两个像素可能完全透明但 RGB 分量不同等。

我知道如何使用 ImageMagick 的convert实用程序检查文件大小是否不同。至于比较像素值,我想到使用ImageMagick的compare实用程序,但如果成功处理命令,退出代码始终为0:http : //www.imagemagick.org/discourse-server/viewtopic.php?f=3&t =22451

可以使用什么命令行测试来比较两个 PNG 图像的像素是否相等?或者也许有一种方法可以使用compare

bash shell diff image imagemagick

1
推荐指数
1
解决办法
3437
查看次数

XSLT - 比较两个相似的 XML 文件

我有两个与此类似的 XML 文件:

1.

<data>
   <object ID="1">
      <ID>1</ID>
      <name>abc</name>
      <weight>50</weight>
   </object>
   <object ID="2">
      <ID>2</ID>
      <name>def</name>
      <weight>75</weight>
   </object>
</data>
Run Code Online (Sandbox Code Playgroud)

2.

<data>
   <object ID="2">
      <ID>2</ID>
      <name>def</name>
      <weight>75</weight>
   </object>
   <object ID="3">
      <ID>3</ID>
      <name>ghi</name>
      <weight>100</weight>
   </object>
</data>
Run Code Online (Sandbox Code Playgroud)

现在我想比较它们。使用附加元素(类似于两者)或新文件(in_both_files.xml、only_in_file1.xml、only_in_file2.xml)。我知道,XSLT 不是这个任务的最佳选择,我缺少 PHP/SQL ......解决这个问题的最佳方法是什么?我已经在寻找解决方案,但大多数人似乎很乐意合并它。我的想法是将每个对象的 ID 作为属性,然后遍历第一个文件并使用 document() 和 key() 在另一个文件中查找相同的对象。这很好/甚至可能吗?现在还没有工作,我不知道,这是否是正确的方法。

编辑:这是为了盘点。根据系统,一个 XML 文件是我们拥有的对象,另一个是仓库中真正的对象。因此,如果一个对象出现在两个列表中,则它们具有绝对相同的 ID、名称、重量等。但 ID 是唯一的,这对于每个对象都是绝对唯一的(但当然应该在两个文件中)。所以我需要知道,哪些对象在仓库中但不在系统中,以便我可以导入它们,哪些对象在系统中但不在仓库中,因此必须标记为“丢失”。

所以只是合并它们,无济于事......

结果像

only_in_system.xml
<data>
   <object>
      <ID>1</ID>
      <name>abc</name>
      <weight>50</weight>
   </object>
</data>

only_in_depot.xml
<data>
   <object>
      <ID>3</ID>
      <name>ghi</name>
      <weight>100</weight>
   </object>
</data>

(additional) everything_is_ok.xml
<data>
   <object>
      <ID>2</ID>
      <name>def</name>
      <weight>75</weight>
   </object>
</data>
Run Code Online (Sandbox Code Playgroud)

会好的!还可以连续使用更多的个人转换(我认为,必须)!

xml xslt diff compare file

1
推荐指数
1
解决办法
5012
查看次数

Diff 命令不符合逻辑

原始文件包含:

B
RBWBW
RWRWWRBWWWBRBWRWWBWWB
Run Code Online (Sandbox Code Playgroud)

我的文件包含:

B
RBWBW
RWRWWRBWWWBRBWRWWBWWB
Run Code Online (Sandbox Code Playgroud)

但是,当我使用该命令时,diff original myfile它显示以下内容:

1,3c1,3
< B
< RBWBW
< RWRWWRBWWWBRBWRWWBWWB
---
> B
> RBWBW
> RWRWWRBWWWBRBWRWWBWWB
Run Code Online (Sandbox Code Playgroud)

当我放置 -w 标记 ( diff original myfile -w) 时,它没有显示任何差异……但我绝对确定这两个文件没有空格/尾行差异。有什么问题?

linux diff

1
推荐指数
1
解决办法
5505
查看次数

ReviewBoard/SVN: rbt post 执行命令失败 ['svn', 'diff', '--diff-cmd=diff', '--notice-ancestry', '-r', 'BASE']

我正在尝试reviewboardSVN. 办公室里的其他人已经完成了他们的系统设置并且能够发布(第一次让它工作的虚拟机的副本)。据我所知,我已经将我的系统设置与他们的系统设置进行了比较,并且看起来是一样的。

当我运行rbt post命令时,我得到:

无法执行命令:['svn', 'diff', '--diff-cmd=diff', '--notice-ancestry', '-r', 'BASE'] ['Index: main.cpp\n ', '================================================ ========== ==========\n', '用法: diff [OPTIONS] \n', '\n', '在统一差异中显示和之间的差异\n', "格式。OPTIONS 是 'svn help diff' 中描述的 diff 扩展名。\n", "单独使用 '--' 表示后面没有更多选项。\n", "svn: E200012: ' diff' 返回 2\n"]

我已经让我的 svn 客户端和 gnu 区分了系统路径中的前两件事: C:\Program Files (x86)\GnuWin32\bin;C:\Program Files (x86)\CollabNet

我正在运行 Windows 8 机器。

阅读https://groups.google.com/forum/#!topic/reviewboard/ylyfqMghJMM看起来其他人已经添加了同样的问题,但似乎没有关于如何解决问题的准确解释。

一些细节。svn --version给出:

svn,版本 1.8.9 (r1591380) 编译于 2014 年 6 月 6 日,03:53:07 在 x86-microsoft-windows5.1.2600 上

版权所有 …

svn diff review-board

1
推荐指数
1
解决办法
2950
查看次数

Python - 比较 2 个文件和输出差异

我的目标是编写一个脚本来比较文件中的每一行,并根据这种比较,创建一个包含不在第二个文件中的文本行的新文件。

例如;

**File 1:** 

Bob:20 
Dan:50 
Brad:34 
Emma:32 
Anne:43

**File 2:**

Dan:50
Emma:32
Anne:43
Run Code Online (Sandbox Code Playgroud)

新输出(文件 3):

Bob:20
Brad:34
Run Code Online (Sandbox Code Playgroud)

我对如何完成这件事有一些想法,但不完全是:

def compare(File1,File2):
   with open(File1, "a") as f1:
       lines = f1.readlines()
       string = line.split(':')
   with open(File2, "a") as f2:
       lines = f2.readlines()
       string2 = line.split(':')
       if string[0] == string[1]:
           with open("newfile2.txt", "w") as f3:
            ....
Run Code Online (Sandbox Code Playgroud)

我想我需要一些类似的东西,然后比较每个文件每一行的字符串[0],但从这一点来看我真的一无所知。

任何帮助都将受到极大欢迎。

python diff compare file output

1
推荐指数
1
解决办法
3万
查看次数

如果 diff 命令导致 bash 没有差异,如何输出“通过”?

我正在编写一个循环遍历我的 ./tests 目录的 shell 脚本,并使用 unix diff 命令来比较我的 C 程序的 .in 和 .out 文件。这是我的shell脚本:

#! /usr/bin/env bash

count=0

# Loop through test files
for t in tests/*.in; do
echo '================================================================'
echo '                         Test' $count
echo '================================================================'
echo 'Testing' $t '...'

# Output results to (test).res
(./snapshot < $t) > "${t%.*}.res"

# Test with diff against the (test).out files
diff "${t%.*}.res" "${t%.*}.out"

echo '================================================================'
echo '                         Memcheck
echo '================================================================'

# Output results to (test).res
(valgrind ./snapshot < $t) > "${t%.*}.res"

count=$((count+1)) …
Run Code Online (Sandbox Code Playgroud)

c testing shell diff automated-tests

1
推荐指数
1
解决办法
3037
查看次数

如何在 WebStorm 中启用侧边栏更改日志?

今天我在 WebStorm 中添加了 Material Theme 插件,我相信这就是 changelist 没有出现在侧边栏的原因。准确地说,当我更改特定代码行并单击删除分号后出现的黄色条时,这就是 IntelliJ 中发生的情况:

IntelliJ 中的更改列表

我所做的更改也可以在 VCS -> Local History -> Show History 菜单选项下看到,它显示了该文件的先前版本和当前版本之间的差异。

但是,在 WebStorm 中执行相同的操作不会在侧边栏上显示更改列表/差异:

Webstorm 中缺少更改列表

这意味着我可以看到它的唯一方法是转到 VCS -> 本地历史 -> 显示历史,这是非常乏味的:

显示历史记录下的差异

我发现能够通过单击那个彩色条来快速恢复/查找更改,这真的很方便,有人能告诉我 IDE 中是否有启用它的设置吗?我上下看了看,但找不到任何相关内容,也许我没有找到正确的关键字。

提前致谢。

ide diff jetbrains-ide intellij-idea webstorm

1
推荐指数
1
解决办法
146
查看次数

Scala中两个字符串的差异

假设我正在编写diff(s1: String, s2: String): List[String]以检查是否s1== s2并返回错误列表:

  • s1[i] != s2[i] 错误是 s1[i] != s2[i]
  • s1[i]如果i >= s2.length错误是s1[i] is undefined
  • s2[i]如果i >= s1.length错误是s2[i] is missing

例如:

diff("a", "a")     // returns Nil
diff("abc", "abc") // Nil
diff("xyz", "abc") // List("x != a", "y != b", "z != c")
diff("abcd", "ab") // List("c is undefined", "d is undefined")
diff("ab", "abcd") // List("c is missing", "d is missing")
diff("", "ab")     // List("a …
Run Code Online (Sandbox Code Playgroud)

string collections diff scala

1
推荐指数
1
解决办法
822
查看次数

使用 awk/diff/sed/grep 从文件进行比较时打印不匹配的值

我试图从两个文件中打印一些不匹配的字符串,其中在我的第一个文件中有一些整数值的字符串用空格分隔,我的第二个文件也有一些字符串值与第一个文件中的一些字符串值匹配,但是前面没有指定任何整数。

使用以下awkdiff命令我试图用时第二个比较让我的第一个文件的无与伦比的数据。

使用awk它会产生第一个文件的内容,基本上它会打印传递给awk命令的最后一个参数的内容。

awk -F, 'FNR==NR {a[$1];next} !($0 in a)' f2 f1
Run Code Online (Sandbox Code Playgroud)

使用diff它会产生第二个文件的内容,这里它将打印传递的第一个参数的内容。

diff --changed-group-format='%<' --unchanged-group-format='' f2 f1
Run Code Online (Sandbox Code Playgroud)

f1

papaya   10
apple    23
Moosumbi 44
mango    32
jackfruit 15
kiwi  60
orange 11
strawberry 67
banana 99
grapes 21
dates 6
Run Code Online (Sandbox Code Playgroud)

f2

apple
mango
kiwi
strawberry
Run Code Online (Sandbox Code Playgroud)

预期结果

papaya   10
Moosumbi 44
jackfruit 15
orange 11
banana 99
grapes 21
dates 6
Run Code Online (Sandbox Code Playgroud)

diff awk grep sed file-comparison

1
推荐指数
1
解决办法
36
查看次数