email - uniq 仅由行的一部分
问题描述
我正在尝试合并电子邮件列表,但我想uniq
(或uniq -i -u
)按电子邮件地址,而不是整行,这样我们就不会重复。
清单 1:
Company A <companya@companya.com>
Company B <companyb@companyb.com>
Company C <companyc@companyc.com>
清单 2:
firstname lastname <firstname@gmail.com>
Fake Person <companyb@companyb.com>
Joe lastnanme <joe@gmail.com>
当前输出为
Company A <companya@companya.com>
Company B <companyb@companyb.com>
Company C <companyc@companyc.com>
firstname lastname <firstname@gmail.com>
Fake Person <companyb@companyb.com>
Joe lastnanme <joe@gmail.com>
所需的输出将是
Company A <companya@companya.com>
Company B <companyb@companyb.com>
Company C <companyc@companyc.com>
firstname lastname <firstname@gmail.com>
Joe lastnanme <joe@gmail.com>
(如companyb@companyb.com
两者中所列)
我怎样才能做到这一点?
解决方案
给定您的文件格式
$ awk -F'[<>]' '!a[$2]++' files
将在尖括号中打印重复内容的第一个实例。或者如果邮件后面没有内容,则不需要解开尖括号
$ awk '!a[$NF]++' files
也可以这样sort
做
$ sort -t'<' -k2,2 -u files
副作用是输出将被排序,这可能是需要的(或不是)。
注意对于这两种选择,假设尖括号不会出现在电子邮件包装器之外的任何地方。
推荐阅读
- sql - 等级和/或密集等级的问题
- c# - 当类型确定具有特定属性时从集合中删除项目的通用方法
- python - py4j.protocol.Py4JJavaError java.lang.NoSuchFieldError: JAVA_9
- powershell - 如何使用 powershell 转换日期时间格式
- c++ - 如何从我的斐波那契数列中获取要列出的单个数字?
- windows - fe_sendauth:PostgreSQL windows 用户没有提供密码错误
- python - 从另一个列表中的列表中删除元素,同时保留重复项
- azure - 使用 Azure CLI 从变量中创建 Azure Key Vault 机密在值中删除插入符号 ^ 字符
- python - Python中简单的按需函数调用树?
- c++ - 如何定义以派生类型为参数的虚函数?