Notepad ++比较两个文件并删除


13

说我有两个文件。file1.txt和file2.txt

这两个文件都包含鞋品牌名称(超过1000个名称)的列表,如下所示:

品牌1品牌2品牌3品牌...

现在-我想将file1与file2进行比较,删除所有重复出现的条目,仅向我显示file1中的内容(不在file2中),反之亦然。

换句话说,目标是查看相反文件中没有的内容,因为这些条目将被手动键入到产品后台的两个不同类别的产品中,以便它们最终匹配/相同。


2
IMO,如果您可以将所有数据复制到其中或将TXT保存为CSV,则在Excel中更容易完成。它可以轻松地排序,删除重复项,而且我敢肯定,列比较也不会很困难。
卡兰2013年

以下链接可能有用: superuser.com/a/290445
akjain 2013年

其他工具合适吗?例如,您可以使用几行python轻松地做到这一点(从每个文件中读取每个品牌并保存到集合中,然后打印集合)
Baldrickk

Answers:


8

Notepad ++的插件“ Compare”会达到目的吗?

您可以从记事本++插件菜单中安装它=>插件管理器=>比较1.5.6

这是官方说明:一个非常有用的diff插件,用于显示2个文件(并排)之间的差异。作者:Ty Landercasper,现在由Jean-Sebastien Leroy进行维护和更新来源:http : //sourceforge.net/projects/npp-plugins/files/ComparePlugin/Compare_1_5_5_src.zip/download


2
不幸的是,我认为没有。Compare插件仅突出显示两个文件之间的差异,但不提供根据其结果进行选择或编辑的工具。尽管肯定有帮助,但恐怕任务对于1000多个品牌仍然非常繁琐。
马克·托马斯

3

一个老问题,但是...

  1. 比较WinMerge中的文件
  2. 工具->生成补丁(保存此)
  3. 补丁既有变化,也有额外的标记。在记事本++中,执行以下替换:

        Search Mode:  Regular Expression
        Find What:    ^[0-9-].*$
        Replace With: <blank>
        Replace All
    

        Search Mode:  Regular Expression
        Find What:    (<|>)
        Replace With: <blank>
        Replace All
    
  4. 在notepad ++中使用TextFX插件执行“工具”->“不区分大小写”排序(选择“输出唯一”选项),或“编辑”->“删除空白行”

有点麻烦,但我还没有找到可以一键完成此操作的工具。


1

要在notepad ++中减去两个文件(文件1-文件2),您可以按照以下步骤操作:

  1. 添加----------------------------作为页脚文件1上(至少新增10个破折号)。这是将file1内容与file2分开的标记线。
  2. 然后将文件2的内容复制到文件1的末尾(在标记之后)
  3. Control + H
  4. 搜索: (?m)^\b(.*)\R(?=[\s\S]+-{10,}$[\s\S]+^\1\R)
  5. 替换为: (leave empty)
  6. 选择Regular expression单选按钮
  7. Replace All
  8. 最后删除页脚和file2内容

如果file1 / file2的行数可能等于标记,则可以修改标记。在这种情况下,您将不得不调整正则表达式。

顺便说一句,您甚至可以记录一个宏来执行所有步骤(添加标记,切换到file2,将内容复制到file1,应用正则表达式,甚至在减去后清除数据),只需按一下按钮即可。


0

如果您可以使用Unix,则可以尝试使用以下简单命令的简单组合:tr,排序和通讯。

首先,将文件从水平分隔转换为垂直分隔:

tr '[:blank:]' '\n' < file1.txt > /tmp/file1.vertical
tr '[:blank:]' '\n' < file2.txt > /tmp/file2.vertical

然后对文件进行排序:

sort /tmp/file1.vertical > /tmp/file1.sorted
sort /tmp/file2.vertical > /tmp/file2.sorted

现在您可以看到file1中的内容,而不是file2中的内容

comm -23 /tmp/file1.sorted /tmp/file2.sorted

或查看file2中没有的内容

comm -13 /tmp/file1.sorted /tmp/file2.sorted

如果要以与开始时相同的水平格式输出,可以执行以下操作:

comm -23 /tmp/file1.sorted /tmp/file2.sorted | tr '\n' ' '
comm -13 /tmp/file1.sorted /tmp/file2.sorted | tr '\n' ' '

完成后,您可以删除创建的临时文件:

rm /tmp/file1.vertical /tmp/file2.vertical /tmp/file1.sorted /tmp/file2.sorted
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.