Awk 匹配2个文件中的2列,并从第一个文件中获取另一个值

Awk 匹配2个文件中的2列,并从第一个文件中获取另一个值,awk,sed,grep,text-processing,Awk,Sed,Grep,Text Processing,我有2个csv文件,其结构如下: File 1: date,keyword,location,page 2019-04-11,ABC,mumbai,http://www.insurers.com and so on. File 2: date,site,market,location,url 2019-05-12,denmark,de ,Frankfurt,http://lufthansa.com 2019-04-11,Netherlands,nl,amsterdam,http://www.

我有2个csv文件,其结构如下:

File 1:
date,keyword,location,page
2019-04-11,ABC,mumbai,http://www.insurers.com
and so on.

File 2:
date,site,market,location,url 
2019-05-12,denmark,de ,Frankfurt,http://lufthansa.com
2019-04-11,Netherlands,nl,amsterdam,http://www.insurers.com
问题是我需要匹配文件和url中的日期。例如:

2019-04-11 and http://www.insurers.com (File 1)
with 
2019-04-11 and http://www.insurers.com (File 2)
编辑: 如果满足此条件,则应将文件1中的关键字(
ABC
)作为第三列(新列)插入文件2中

预期产出:

date,site,keyword,market,location,url
2019-04-11,Netherlands,ABC,nl,amsterdam,http://www.insurers.com
我曾尝试用java将日期和URL放在地图中,但重复的URL太多了。 因此,我正在寻找bash、awk、grep或sed解决方案。 谢谢。

试试gnu-sed:

sed -En 's!^([0-9]{4}-[0-9]+-[0-9]+,).+(http://\w.+)!s#^\1([^,]+),[^,]+,\\s*\2#\\1#p!p' File2| sed -Enf - File1 >Result

@kvantour的可能重复项这不是重复项,因为两个文件中的密钥必须成对出现(另一个问题单独处理),OP在其最新编辑中刚刚通知我们,所需的输出实际上是对其中一个输入文件的修改。@EdMorton抱歉,但我认为这是重复项,虽然可能是相反的方向。我只是想知道复制品和非复制品之间的界限在哪里。问题的关键部分是相同的。@kvantour这两个问题对我来说似乎非常不同(匹配一行中的一对键与匹配任意行中的两个单独键),然后保存一个值以用于修改输出。但我们都有自己的看法。。。哦,等等,我在看问题中的OPs代码,而不是解决方案。您可能与关于修改输出的部分完全不同。我觉得这很不一样,不会是一个傻瓜,但现在我知道你是从哪里来的了。@EdMorton,但你两个答案的要点是相同的。“使用双键创建一个数组。查找匹配项。你对数组内容所做的操作与此无关,更取决于用户。我之所以提到这一点,是因为我注意到,如果你把它归结为简单的基础知识,我们会遇到许多看似不同但却完全相同的问题。
sed -En 's!^([0-9]{4}-[0-9]+-[0-9]+,).+(http://\w.+)!s#^\1([^,]+),[^,]+,\\s*\2#\\1#p!p' File2| sed -Enf - File1 >Result