使用findstr比较/查找两个文本文件之间的差异

时间:2014-07-28 14:41:17

标签: windows batch-file command-line cmd findstr

我需要比较两个文本文件并找出它们之间的区别。基本上我有一个输入文件(input.txt),它将由批处理作业处理,我的批处理将记录作业成功运行的输出(successful.txt)。

简单来说,我需要找出input.txt和successful.txt(input.txt-successful.txt)之间的区别,我正在考虑使用findstr。它看起来很好,但我不明白它的一部分。它总是包含输出中input.txt的最后一行。你可以在下面的例子中看到。请注意,在input.txt的最后一行之后没有前导空格或换行符。

在下面的示例中,您可以看到两个文件中都存在行server1,db1,但仍在输出中列出。 (它始终是input.txt的最后一行)

D:\Scripts\dummy>type input.txt
server2,db2
server3,db3
server10,db10
server4,db4
server1,db11
server10,schema11
host1,sch2
host11,sql2
host11,sql3
server1,db1
D:\Scripts\dummy>type successful.txt
server1,db1
server2,db2
server3,db3
server4,db4
server10,db10
host1,sch2
host11,sql2
host11,sql3
D:\Scripts\dummy>findstr /vixg:successful.txt input.txt
server1,db11
server10,schema11
server1,db1

我做错了什么?

干杯, ģ

1 个答案:

答案 0 :(得分:1)

我可以通过在input.txt的最后一行之后移除换行来重现您的结果,因此解决方案1将在input.txt的末尾添加换行符。既然您似乎说input.txt没有终端换行符,那么添加一个可以解决问题; findstr按预期运行,因为它作用于换行符终止的行。

解决方案2将是

type input.txt|findstr /vixg:successful.txt