我正在尝试比较两个文本文件,并将结果保存在新文件中。它应该仅显示新的线条,而忽略排序订单。我只想看看什么是新的,没有线路变化。为了达到这一点,我尝试了下面可以看到的批处理文件中的几种方法。首先,我使用uniq并排序更改两个文件的顺序,例如:
D:/filetype/sort.exe -b D:filetypelistfilelistfile_clean_tmp3_1.txt -oD:filetypelistfilelistfile_clean_tmp4.txt
之后,我尝试将两个文件与新文件进行比较。
1)通过comm
D:/filetype/comm.exe --nocheck-order -2 -3 d:/filetype/listfile/listfile_clean_tmp4.txt d:/filetype/listfile/archive/tmp/all.txt > D:filetypelistfilelistfile_clean_tmp5.txt
一个可怕的解决方案,无法正常工作。如果顺序有所不同,它会提供很多错误的结果。例如,如果我将结果保存到档案中,并将其再次与其进行比较,则它正在显示新行。
2)通过diff
D:/filetype/diff.exe --new-line-format="" --unchanged-line-format="" d:/filetype/listfile/listfile_clean_tmp4.txt d:/filetype/listfile/archive/tmp/all.txt > D:filetypelistfilelistfile_clean_tmp5.txt
与.comm相同,如果我将存档的文件与自己进行比较,它将显示新行。
3)grep,sed and diff
D:/filetype/diff.exe -U $(wc -l < (D:/filetype/listfile/listfile_clean_tmp4.txt) (D:/filetype/listfile/listfile_clean_tmp4.txt D:/filetype/listfile/archive/tmp/all.txt | D:/filetype/grep.exe '^-' | D:/filetype/sed.exe 's/^-//g' > D:filetypelistfilelistfile_clean_tmp5.txt
无法在Windows批处理上运行此操作,也无法弄清楚为什么出现错误消息"错误的文件或文件夹名称"。任何想法都会很棒。
一些futher信息 - 我在Windows内使用Coreutils - 可以使用.py脚本,批处理,PHP和Corutils - 我将结果添加到存档
这是一个示例文件:http://pastebin.com/raw/tngsu2w6
首先:我将其与一个空的txt文件(all.txt)进行比较,在最后一步中,我将其合并到All.txt(As Archive)和下一个运行中,他找不到任何区别。
copy /b D:filetypelistfilearchive*.txt D:filetypelistfilelistfile_tmp_all.txt
D:/filetype/uniq.exe D:filetypelistfilelistfile_tmp_all.txt > D:/filetype/listfile/archive/tmp/tmp_all2.txt
D:/filetype/sort.exe -b D:/filetype/listfile/archive/tmp/tmp_all2.txt -oD:/filetype/listfile/archive/tmp/all.txt
不要混淆任何人这是整个事情(这有点斯巴达)。http://pastebin.com/t68sqpet
更新1 更改了Pastbin代码,零件上有一个错字,diff.exe" < filename < filename > output
"将在Windows上trow错误消息。而且数字不是差异的错。我使用了" uniq.exe -c",需要删除-c。
好吧,我弄清楚了为什么COMM无法正常工作。命令
D:/filetype/comm.exe --nocheck-order -2 -3 d:/filetype/listfile/listfile_clean_tmp4.txt d:/filetype/listfile/archive/tmp/all.txt > D:filetypelistfilelistfile_clean_tmp5.txt
不需要--no-check-order
,但这还不是全部。它未能比较的主要原因是,我在Mein工具链中使用了Uniq或合并,并且在编辑了部分文本文件后,它始终不再严格。将与通信进行比较的文件总是以正确的顺序排序非常重要。这是一个来自Coreutils
D:/filetype/core/sort.exe -b D:filetypelistfilearchivetmpbruteforce.txt -o D:filetypelistfilearchivetmpbruteforce2.txt
D:/filetype/core/uniq.exe D:filetypelistfilearchivetmpbruteforce2.txt > D:filetypelistfilearchivetmpbruteforce3.txt
D:/filetype/core/sort.exe -b D:filetypelistfilearchivetmpbruteforce3.txt -o D:filetypelistfilearchivetmpbruteforce4.txt
注意:如果在不复制其他位置的情况下对同一文件进行排序(除了UNIQ之外,那对这样做的反应不佳)就不会遇到麻烦。我个人更喜欢临时文件,但不是排序的必要条件。
D:/filetype/core/sort.exe -b D:/filetype/listfile/listfile.txt -o D:/filetype/listfile/listfile.txt
或用简单的单词.." 更改>对其进行分类"如果您想比较它。