我有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
我尝试将日期和URL放入Java的地图中,但是URL重复太多。 所以我正在寻找bash,awk,grep或sed解决方案。 谢谢。
答案 0 :(得分:2)
$ awk '
BEGIN { FS=OFS="," }
NR==FNR { m[$1,(NR>1?$4:"url")]=$2; next }
($1,$5) in m { $2=$2 OFS m[$1,$5]; print }
' file1 file2
date,site,keyword,market,location,url
2019-04-11,Netherlands,ABC,nl,amsterdam,http://www.insurers.com
答案 1 :(得分:0)
尝试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