【发布时间】:2020-08-20 00:28:02
【问题描述】:
我有两个不同的文件,每个文件大约 1000 行,结构如下:
file1:(名字;姓氏;地址)
Mike;Tyson;First Street 2
Tom;Boyden;Second Street 6
Tom;Cruise;Third Street 9
Mike;Myers;Second Street 4
file2: (First Name Last Name; E-Mail; ID) OR (Last Name First Name;E-Mail; ID)
Mike Tyson;mike@tyson.com;45753
Cruise Tom;tom@cruise.com;23562
Jennifer Lopez;jennifer@lopez.com;92746
Brady Tom;tom@brady.com;27583
我想将 file1 的前两列与 file2 的整个第一列进行比较。如果 file1 的两个条目都存在于 file2 的第一列(以任意顺序),我想打印 file1 的匹配行。然后搜索file1的第二行,再次与file2的整列进行比较,以此类推。
在 file2 中,顺序可以是 (First Name Last Name) 或 (Last Name First Name),我想在两种情况下都打印匹配的行。
预期输出:
Mike;Tyson;First Street 2
Tom;Cruise;Third Street 9
我对使用 awk、grep 或其他任何东西的解决方案感到满意。
我尝试了类似问题的解决方案,但输出为空:
awk -F';' 'NR==FNR{c[$1$2]++;next};c[$1$2] > 0' file1 file2
谢谢
【问题讨论】:
-
1.将 file1 中的第一个
;替换为空格。 2.join第一个字段上的文件。指定-o输出格式以仅打印file1 中的字段 2. 将第一个空格替换为;。 -
你尝试了什么?
-
@Ankush 我用我目前尝试过的解决方案更新了帖子
-
不要简单地连接字符串来尝试创建一个唯一的字符串。
a bc->abc和ab c->abc。您需要包含一个分隔符以使结果唯一。在 awk 手册页中查找SUBSEP。