0

最近几天我在 Windows Batch 上用 comm 做了很多事情来比较彼此的文本文件。所以正常情况下我没有什么可以做错的。在我的其他项目中,下面的代码工作正常,但在实际情况下却不行,我看不出有任何原因。

好的,我对 comm 的了解是需要对两个文件进行排序,所以我为这两个文件添加了它,现在我尝试比较 New File > With Archive 并且输出应该是不在all.txt中的行

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 并且我尝试比较的这些行在里面,我检查了排序是否与测试文件和不同的字母一起正常工作。

所以这就是我的想法

  1. 在我的其他项目中是我看不到的差异。这是我的错
  2. 如果一个文本文件太小,Comm 无法比较两个文件,我尝试将 50MB 文件与 1KB 文件进行比较

我可以根据要求提供两个文件进行测试

4

1 回答 1

0

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

要删除我使用 sed 的空白行

视窗

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

Linux

sed '/^\s*$/d'

而 jup 现在一切正常。(但不要忘记排序)

于 2016-07-09T14:49:57.860 回答