我有以下csv文件:
csv file 1 csv file 2
------------ ------------
1,2,3,4,5 1,2,3,4,6
a,b,c,d,e 11,12,3,4,5
a,b,c,d,e 11,122,3,4,15
a,b,c,d,e 01,2,3,4,6
a,b,c,d,e
11,12,3,4,5
11,12,3,4,15
01,2,3,4,5
我使用以下命令进行比较:
compare-object (gc test1.csv) (gc test2.csv) -SyncWindow 1
,输出为:
InputObject SideIndicator
----------- -------------
1,2,3,4,6 =>
1,2,3,4,5 <=
11,12,3,4,5 =>
a,b,c,d,e <=
11,122,3,4,15 =>
a,b,c,d,e <=
a,b,c,d,e <=
a,b,c,d,e <=
11,12,3,4,5 <=
11,12,3,4,15 <=
01,2,3,4,6 =>
01,2,3,4,5 <=
对于前3行,命令只是逐行进行比较,然后继续行只存在于文件1中,最后进行行01,2,3,4,6
的比较
我只是想知道为什么它在处理前3行之后不继续使用第4行,是否有任何规则要考虑文件2中的01,2,3,4,6
类似于文件1中的01,2,3,4,5
?如果是这样,为什么输出不是:
InputObject SideIndicator
----------- -------------
1,2,3,4,6 =>
1,2,3,4,5 <=
a,b,c,d,e <=
a,b,c,d,e <=
a,b,c,d,e <=
a,b,c,d,e <=
11,12,3,4,5 =>
11,12,3,4,5 <=
11,122,3,4,15 =>
11,12,3,4,15 <=
01,2,3,4,6 =>
01,2,3,4,5 <=
答案 0 :(得分:2)
我看到你正在使用SyncWindow参数,这就是命令行为“怪异”的原因。 Compare-Object文档描述了参数的功能:
<强> -SyncWindow
<Int32>
强>
指定Compare-Object在查找对象集合中时匹配时检查的相邻对象的数量。当比较对象未在集合中的相同位置找到对象时,它会检查相邻对象。默认值为[Int32] :: MaxValue,这意味着Compare-Object会检查整个对象集合。
如果省略该参数,则命令会按预期比较对象。
但是当用参数查看示例时,我没有看到任何合理的解释原因。
答案 1 :(得分:2)
-SyncWindow 1
的 Compare-Object
正在通过这两个文件移动一个对象窗口。