删除 vCard 文件中的重复记录

拉瓦伊

我有一个包含数千个联系人记录的 vCard 文件。此文件已损坏,并且已为每个用户添加了个人电话、工作和额外记录的副本。

我怎样才能清理重复项?

BEGIN:VCARD
VERSION:3.0
N:Doe;John;Q.,Public
FN;CHARSET=UTF-8:John Doe
TEL;TYPE=WORK,VOICE:(111) 555-1212
TEL;TYPE=WORK,VOICE:(111) 555-1212
TEL;TYPE=WORK,VOICE:(111) 555-1212
TEL;TYPE=WORK,VOICE:(111) 555-1212
TEL;TYPE=HOME,VOICE:(404) 555-1212
TEL;TYPE=HOME,VOICE:(404) 555-1212
TEL;TYPE=HOME,VOICE:(404) 555-1212
TEL;TYPE=HOME,TYPE=VOICE:(404) 555-1213
TEL;TYPE=HOME,TYPE=VOICE:(404) 555-1213
TEL;TYPE=HOME,VOICE:(404) 555-1212
TEL;TYPE=HOME,VOICE:(404) 555-1212
TEL;TYPE=HOME,VOICE:(404) 555-1212
TEL;TYPE=HOME,TYPE=VOICE:(404) 555-1213
TEL;TYPE=HOME,TYPE=VOICE:(404) 555-1213
TEL;TYPE=HOME,TYPE=VOICE:(404) 555-1213
TEL;TYPE=HOME,TYPE=VOICE:(404) 555-1213
EMAIL;TYPE=PREF,INTERNET:[email protected]
EMAIL;TYPE=INTERNET:[email protected]
EMAIL;TYPE=PREF,INTERNET:[email protected]
EMAIL;TYPE=PREF,INTERNET:[email protected]
EMAIL;TYPE=PREF,INTERNET:[email protected]
EMAIL;TYPE=PREF,INTERNET:[email protected]
EMAIL;TYPE=INTERNET:[email protected]
EMAIL;TYPE=INTERNET:[email protected]
EMAIL;TYPE=INTERNET:[email protected]
EMAIL;TYPE=INTERNET:[email protected]
EMAIL;TYPE=INTERNET:[email protected]
EMAIL;TYPE=PREF,INTERNET:[email protected]
EMAIL;TYPE=PREF,INTERNET:[email protected]
EMAIL;TYPE=PREF,INTERNET:[email protected]
EMAIL;TYPE=PREF,INTERNET:[email protected]
EMAIL;TYPE=PREF,INTERNET:[email protected]
ADR;TYPE=HOME:;;42 Plantation St.;Baytown;LA;30314;United States of America
URL:https://www.google.com/
PHOTO;VALUE=URL;TYPE=PNG:http://upload.wikimedia.org/wikipedia/commons/thumb/a/a5/Example_svg.svg/200px-Example_svg.svg.png
AGENT:BEGIN:VCARD
 VERSION:3.0
 N:Doe;John;Q.,Public
 FN:John Doe
 TEL;TYPE=WORK,VOICE:(111) 555-1212
 TEL;TYPE=HOME,VOICE:(404) 555-1212
 TEL;TYPE=HOME,TYPE=VOICE:(404) 555-1213
 EMAIL;TYPE=PREF,INTERNET:[email protected]
 EMAIL;TYPE=INTERNET:[email protected]
 PHOTO;VALUE=URL;TYPE=PNG:http://upload.wikimedia.org/wikipedia/commons/thumb/a/a5/Example_svg.svg/200px-Example_svg.svg.png
 END:VCARD
END:VCARD

我使用了 StackOverflow 中看到的以下解决方案,但它没有解决问题,因为并非所有重复项都连续出现。

perl -ne 'print unless (defined($prev) && ($_ eq $prev)); $prev=$_'

导致:

...
TEL;TYPE=WORK,VOICE:(111) 555-1212
TEL;TYPE=HOME,TYPE=VOICE:(404) 555-1213
TEL;TYPE=WORK,VOICE:(111) 555-1212
TEL;TYPE=HOME,TYPE=VOICE:(404) 555-1213
TEL;TYPE=WORK,VOICE:(111) 555-1212
TEL;TYPE=HOME,TYPE=VOICE:(404) 555-1213
EMAIL;TYPE=PREF,INTERNET:[email protected]
EMAIL;TYPE=INTERNET:[email protected]
EMAIL;TYPE=PREF,INTERNET:[email protected]
EMAIL;TYPE=INTERNET:[email protected]
EMAIL;TYPE=PREF,INTERNET:[email protected]
EMAIL;TYPE=INTERNET:[email protected]
三聚氰胺

删除所有重复行的最简单方法是

perl -ne 'print if !$seen{$_}++'

如果要分别对待每个BEGIN:VCARD部分,

perl -ne '%seen = () if /\bBEGIN:VCARD\b/; print if !$seen{$_}++'

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用XLST从XML文件中删除重复记录

来自分类Dev

删除重复记录

来自分类Dev

删除SQL中的重复记录

来自分类Dev

如何删除SQL中的重复记录?

来自分类Dev

使用python合并数据并删除许多JSON文件中的重复记录

来自分类Dev

要删除vcard联系人重复项,比较.vcf文件中两个vcard是否相等不能通过简单== vobject比较进行工作

来自分类Dev

使用分组依据从Mysql表中删除重复记录

来自分类Dev

使用SQL删除表中的重复记录

来自分类Dev

Oracle SQL查询:从表中删除最旧的重复记录

来自分类Dev

从大型Laravel集合中删除重复记录

来自分类Dev

如何快速删除mysql中的重复记录

来自分类Dev

如何从mongodb数据库中删除重复记录

来自分类Dev

从 SQL Server 中的视图中删除重复记录

来自分类Dev

需要查找并删除表中的重复记录

来自分类Dev

如何从对象数组中删除重复记录?

来自分类Dev

如何使用linq删除重复记录?

来自分类Dev

删除基于多列的重复记录

来自分类Dev

如何从SQL Server删除重复记录?

来自分类Dev

动态SQL删除重复记录的过程

来自分类Dev

如何使用linq删除重复记录?

来自分类Dev

根据规则选择或删除重复记录

来自分类Dev

URI中的vCard标签

来自分类Dev

计算SQL中的重复记录,然后将重复记录的数量添加到记录数量中,并删除其余的记录

来自分类Dev

在json对象数组中添加重复记录并删除最后一个重复

来自分类Dev

从表中查找重复记录,并删除除最近日期以外的所有记录

来自分类Dev

从表中查找重复记录,并删除除最近日期以外的所有记录

来自分类Dev

删除状态相同的重复记录,仅保留最新记录

来自分类Dev

如何删除重复记录并保留最新记录?

来自分类Dev

只从csv文件中删除重复的记录

Related 相关文章

  1. 1

    使用XLST从XML文件中删除重复记录

  2. 2

    删除重复记录

  3. 3

    删除SQL中的重复记录

  4. 4

    如何删除SQL中的重复记录?

  5. 5

    使用python合并数据并删除许多JSON文件中的重复记录

  6. 6

    要删除vcard联系人重复项,比较.vcf文件中两个vcard是否相等不能通过简单== vobject比较进行工作

  7. 7

    使用分组依据从Mysql表中删除重复记录

  8. 8

    使用SQL删除表中的重复记录

  9. 9

    Oracle SQL查询:从表中删除最旧的重复记录

  10. 10

    从大型Laravel集合中删除重复记录

  11. 11

    如何快速删除mysql中的重复记录

  12. 12

    如何从mongodb数据库中删除重复记录

  13. 13

    从 SQL Server 中的视图中删除重复记录

  14. 14

    需要查找并删除表中的重复记录

  15. 15

    如何从对象数组中删除重复记录?

  16. 16

    如何使用linq删除重复记录?

  17. 17

    删除基于多列的重复记录

  18. 18

    如何从SQL Server删除重复记录?

  19. 19

    动态SQL删除重复记录的过程

  20. 20

    如何使用linq删除重复记录?

  21. 21

    根据规则选择或删除重复记录

  22. 22

    URI中的vCard标签

  23. 23

    计算SQL中的重复记录,然后将重复记录的数量添加到记录数量中,并删除其余的记录

  24. 24

    在json对象数组中添加重复记录并删除最后一个重复

  25. 25

    从表中查找重复记录,并删除除最近日期以外的所有记录

  26. 26

    从表中查找重复记录,并删除除最近日期以外的所有记录

  27. 27

    删除状态相同的重复记录,仅保留最新记录

  28. 28

    如何删除重复记录并保留最新记录?

  29. 29

    只从csv文件中删除重复的记录

热门标签

归档