在命令行中从较大的数据集中删除较小数据集的最简单方法

时间:2014-05-30 10:55:38

标签: windows batch-file cmd

我正在寻找最简单的方法来过滤两个文件。

INPUT txt文件
文件1(更大的一个):

abc111
abc112
abc113
abc114
abc115
...
zbc999

文件2(较小的一个):

abc111
abc112
abc113

输出: 在输出中,我想要使用非重复(唯一)数据集的新文件。换句话说,在输出文件中,必须只包含来自较大文件1的条目,这些条目是唯一的并且不会出现在较小的文件中。

顺便说一句:
如果文件名很长很难在每次控制台输入时如何轻松完成?

1 个答案:

答案 0 :(得分:0)

"非常痛苦"?

@echo off
REM step 1: remove doublettes from file1
echo.>file1.tmp
for /f %%i in (file1.txt) do (
 findstr /x /L "%%i" file1.tmp>nul ||echo %%i>>file1.tmp
)

REM step 2: extract lines that doesn't exist in file2
findstr /v /x /L /g:file2.txt file1.tmp >output.txt

type output.txt