Сопоставьте 2 столбца в 2 файлах и получите другое значение из первого файла - PullRequest
1 голос
/ 18 апреля 2019

У меня есть 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)

Edit: Если это условие выполняется, ключевое слово (ABC) в файле 1 должно быть вставлено в файл 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. Спасибо.

Ответы [ 2 ]

2 голосов
/ 18 апреля 2019
$ 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
0 голосов
/ 18 апреля 2019

попробуйте 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...