Windows上的Linux Comm - 输出应为零

时间:2016-07-09 14:16:59

标签: sorting batch-file comm

最后几天我在Windows Batch上使用comm做了很多事情来比较彼此的文本文件。所以,正常情况下我无能为力。在我的其他项目中,下面的代码工作正常但不是在实际情况下,我看不出任何理由。

好的,我对comm的了解是,需要对两个文件进行排序,以便为两个文件添加它,现在我尝试比较新文件>使用Archive和Output应该是all.txt

NOT 的行
D:/filetype/core/sort.exe -b D:\filetype\test\all.txt -oD:\filetype\test\all.txt

D:/filetype/core/sort.exe -b D:\filetype\test\listfile_export_tmp2.txt -oD:\filetype\test\listfile_export_tmp2.txt

D:/filetype/core/comm.exe -2 -3 D:\filetype\test\listfile_export_tmp2.txt D:\filetype\test\all.txt > D:\filetype\test\output.txt

为了测试,我添加了我想要与我的all.txt进行比较的文本,因此输出应为零,因为这不是什么新鲜事。但结果是output.txt正是我在第一个文本文件中得到的。我手动检查了all.txt,我尝试比较的这些行在里面,我检查了那种排序与testfile和不同的字母一起正常工作。

所以这就是我的想法

  1. 在我的其他项目中,我看不到差异。它就是 我的错。
  2. 如果一个文本文件很小,Comm无法比较两个文件,我尝试将50MB文件与1KB文件进行比较
  3. 我可以根据要求提供两个文件进行测试

1 个答案:

答案 0 :(得分:0)

好的,我能够搞清楚。 Grep和comm将在比较时匹配空白行。因此,如果您只有一个小文本文件作为输入,而另一个空白行(在我的情况下更大),他可能会匹配所有空白行,因此您将再次看到您的输入。

删除我使用sed的空行

sed.exe "/^\s*$/d" 

Linux的

sed '/^\s*$/d'

现在jup再次正常运转。 (但不要忘记排序)