Файл 2:
U1664246201||2020-03-01 00:00:00|2020-12-31 00:00:00|abc
U1664246201||2020-03-01 00:00:00|2020-12-31 00:00:00|abc
|R1664236401|2018-03-01 00:00:00|2020-12-31 00:00:00|abc
U1664546501|R1664546401|2019-04-01 00:00:00|2020-12-30 00:00:00|abc
U1774546301||2020-05-01 00:00:00|2020-12-31 00:00:00|abc
Файл 1:
U17745463
R16645464
R16642364
Текущее решение
awk 'BEGIN {print "columns"} {FS=OFS="|"} NR==FNR{a[$1]; next} {for (i in a) if($1 != "" && $2 != ""){if(index($1, i)){print $0} else {if(index($2, i)){print $0}} } else{ if((index($1, i)) || (index($2, i))){print $0}}}' file2.txt file1.txt > result.txt
Выход:
|R1664236401|2018-03-01 00:00:00|2020-12-31 00:00:00|abc
U1664546501|R1664546401|2019-04-01 00:00:00|2020-12-30 00:00:00|abc
U1774546301||2020-05-01 00:00:00|2020-12-31 00:00:00|abc
This Решение дает вывод, но при обработке миллионов записей это занимает больше времени и иногда зависает. Есть ли лучшее решение для этой проблемы?